PermCheck coding task - Learn to Code - Codility
요약
56 → 100
- Array → Set은 쉽게 가능하다. Set(Array<>)
- .max(), .min(), .count는 각각 메서드, 메서드, 프로퍼티라는 것을 기억하자.
- 최대 1,000,000,000 크기의 배열을 O(n)으로 탐색하는 것은, 시간 초과가 발생하지 않았음을 기억하자.
접근
// permutation이 성립하는 경우 1, 그렇지 않은 경우 0 return
// A 배열의 길이는 1,000,000,000이다. O(N)이 가능할까 ?
// 쉬운 접근은 Set을 활용하는 것이다.
// 배열을 탐색하며 Set에 추가하고, Set.count == N을 출력하면 된다.
// 또 다른 힌트는 permutation의 정의가, 1...N의 범위가 한 번씩만 등장한다는 것이다.
// 따라서 A의 크기가 N과 다른 경우 return 0이다.
// else N과 같다면, Set(A)의 크기까지 N과 같은 경우 return 1이다.
// 다행히 Array를 Set으로 쉽게 바꿀 수 있다. Set(Array)
나의 풀이
import Foundation
import Glibc
public func solution(_ A : inout [Int]) -> Int {
let setA = Set(A)
let maxValueOfA = A.max()
let sizeOfA = A.count
let sizeOfSetA = setA.count
guard sizeOfA == maxValueOfA else { return 0 }
guard sizeOfSetA == maxValueOfA else { return 0 }
return 1
}
'Dev > PS' 카테고리의 다른 글
| [Swift 알고리즘] MissingInteger - Codility (0) | 2024.01.20 |
|---|---|
| [Swift 알고리즘] MaxCounters - Codility (0) | 2024.01.20 |
| [Swift 알고리즘] FrogRiverOne - Codility (0) | 2024.01.17 |
| [Swift 알고리즘] TapeEquilibrium - Codility (0) | 2024.01.17 |
| [Swift 알고리즘] PermMissingElem - Codility (0) | 2024.01.17 |