코딩테스트

[Swift 알고리즘] Codility - PermCheck

유정주 2022. 6. 18. 11:33
반응형

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

 

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

 

Github

 

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

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

github.com

 

문제 링크

 

PermCheck coding task - Learn to Code - Codility

Check whether array A is a permutation.

app.codility.com

 

풀이

이번 문제는 input Array가 1~X까지의 수를 1개씩 모두 가지고 있느냐를 판단하는 문제입니다.

즉, [1, 2, 3, 4]처럼 모두 다 가지고 있어야 한다는 것이죠.

 

이번에도 Set을 적극 활용했습니다.

[1, 1, 1, 1]처럼 중복된 수가 있다면 안 되기 때문에 중복을 없애기 위해 Set을 이용했습니다.

중복을 없앤 Set의 길이와 input Array의 길이가 같다면 중복된 값이 없다는 의미입니다.

또한 모든 수가 1개씩 들어있다는 의미는 배열의 max값이 배열의 길이와 같다는 의미이므로

두 개의 조건을 && 로 판단하여 True면 답이고, 아니면 답이 아닙니다.

 

이전 문제보다 오히려 깔끔하게 해결할 수 있었던 것 같아요.

 

감사합니다!

 

전체 코드

더보기
import Foundation

public func solution(_ A : inout [Int]) -> Int {
    let setA = Set(A)
    
    return (setA.count == A.max() && setA.count == A.count) ? 1 : 0
}

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

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

공감 댓글 부탁드립니다.

 

 

반응형