반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "Codility - PermCheck" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 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
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형