-
[Algorithm/Swift] Codility / MaxCountersApple /Algorithm 2022. 12. 23. 08:31
문제
https://app.codility.com/programmers/lessons/4-counting_elements/max_counters
풀이
문제 이해하기가 약간 어렵습니다. 다만 이해만 하면 풀이는 쉽습니다.
N은 새로 만들 배열의 요소 개수입니다.
새로운 배열을 만들어서 주어진 배열 A의 요소값을 통해 인덱스 값으로 생각하고
요소(인덱스) 값이 N보다 같거나 작으면 해당 인덱스의 요소 값 카운터를 +1 증가시켜줍니다.
만약 요소 값이 N보다 크면 현재 최대 카운터 값을 새로 만든 배열의 모든 요소에 동일하게 넣어줍니다.
Troubleshooting
- Performance 80%
- maxCounter 후처리
Code
public func solution(_ N : Int, _ A : inout [Int]) -> [Int] { var emptyArray = Array(repeating: 0, count: N) var maxCounter = 0 for counter in A { let num = counter - 1 if num >= N { for i in 0..<N { emptyArray[i] = maxCounter } } else { emptyArray[num] += 1 maxCounter = max(emptyArray[num], maxCounter) } } return emptyArray } solution(5,[3,4,4,6,1,4,4])
public func solution(_ N : Int, _ A : inout [Int]) -> [Int] { var emptyArray = Array(repeating: 0, count: N) var maxCounter = 0 var start_line = 0 for i in A { let num = i - 1 if i > N { start_line = maxCounter } else if emptyArray[num] < start_line { emptyArray[num] = start_line + 1 } else { emptyArray[num] += 1 } if i <= N && emptyArray[num] > maxCounter { maxCounter = emptyArray[num] } } for i in 0..<emptyArray.count { if emptyArray[i] < start_line { emptyArray[i] = start_line } } return emptyArray }
'Apple > Algorithm' 카테고리의 다른 글
[Algorithm/Swift] Codility / CountDiv (0) 2022.12.23 [Algorithm/Swift] Codility / PassingCars (0) 2022.12.23 [Algorithm/Swift] Codility / PermCheck (0) 2022.12.23 [Algorithm/Swift] Codility / FrogRiverOne (0) 2022.12.23 [Algorithm/Swift] Codility / TapeEquilibrium (0) 2022.12.23 - Performance 80%