코딩테스트

[Swift 알고리즘] Codility - PermMissingElem

유정주 2022. 6. 17. 22:59
반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 "Codility - PermMissingElem" 문제를 풀었습니다.

 

Github

 

GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

github.com

 

문제 링크

https://app.codility.com/programmers/lessons/3-time_complexity/perm_missing_elem/

 

PermMissingElem coding task - Learn to Code - Codility

Find the missing element in a given permutation.

app.codility.com

 

풀이

이번 문제는 [Int]가 input 될 때 빠진 정수를 찾는 문제입니다.

이번 문제를 풀며 Codility에 대해 이해한 것 같습니다.

 

처음에는 아래 코드처럼 작성했는데요.

while count == a[count-1] { ... } 처럼 작성한다면 코드가 더 짧아지지 않을까? 라는 생각을 했습니다.

하지만 Codility의 테스트 케이스는 아주 다양했습니다.

 

단순히 봐도 비어 있는 배열일 때 a[count-1]은 런타임 에러가 발생하죠.. ㅠㅠ

따라서 여러 케이스에 대해 고려가 되는 아래 코드를 그대로 사용한 것이죠 ㅎㅎ;;

 

코딜리티가 생각보다 까다롭게 봐줘서 방어 코드를 작성하는 연습이 가능한 것 같네요.

 

전체 코드

더보기
import Foundation

public func solution(_ A : inout [Int]) -> Int {
    // write your code in Swift 4.2.1 (Linux)
    let a = A.sorted()

    var count = 1
    for num in a {
        if count != num {
            break
        }

        count += 1
    }

    return count
}

아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

 

 

반응형