-
[Algorithm/Swift] Codility / PermCheckApple /Algorithm 2022. 12. 23. 08:29
문제
https://app.codility.com/programmers/lessons/4-counting_elements/perm_check/
풀이
N개의 정수로 구성된 배열이 주어집니다.
배열의 요소는 각 요소를 한 번만 포함하는 시퀀스입니다.
순열이면 1을 반환하고 아니면 0을 반환합니다.
Tip
- 이진수 구하는 방법
- max(N, N2)
Code
public func solution(_ A : inout [Int]) -> Int { let countOfA = A.count let countOfSum = (countOfA * ( countOfA + 1)) / 2 let arrayOfSum = A.reduce(0 , +) if countOfSum - arrayOfSum == 0 { return 1 } else { return 0 } }
어쩐지 쉽다 했어,,ㅎㅎ
Performance는 그렇다고 쳐도 정확도까지,,ㅎㅎ 반성,,
Code O(N) or O(N * log(N))
public func solution(_ A : inout [Int]) -> Int { var emptyArray:[Int] = [] var valid = true var aToSet = Set<Int>() var aToSort = A.sorted() for i in 1...A.count { emptyArray.append(i) } for i in 0..<A.count { if aToSort[i] == emptyArray[i] { valid = true } else { valid = false } } return valid ? 1 : 0 }
Code O(N) or O(N * log(N))
public func solution(_ A : inout [Int]) -> Int { let setA = Set(A) return (setA.count == A.max() && setA.count == A.count) ? 1 : 0 }
중복 제거를 위해 Set을 사용하고, A의 길이와 비교합니다.
A의 Max값은 Set의 수와 동일하면 True입니다.
핵심은 중복 제거 !
똥멍청이,,;;
정주님 감사합니다..;;
'Apple > Algorithm' 카테고리의 다른 글
[Algorithm/Swift] Codility / PassingCars (0) 2022.12.23 [Algorithm/Swift] Codility / MaxCounters (0) 2022.12.23 [Algorithm/Swift] Codility / FrogRiverOne (0) 2022.12.23 [Algorithm/Swift] Codility / TapeEquilibrium (0) 2022.12.23 [Algorithm/Swift] Codility / PermMissingElem (0) 2022.12.23 - 이진수 구하는 방법