문제
풀이 코드
let N = Int(readLine()!)!
var nums = readLine()!.split(separator: " ").map{Int(String($0))!}
var numCount = Array(repeating: 0, count: nums.max()!)
var answer = [Int]()
// 등장횟수 계산
for idx in 0..<N {
numCount[nums[idx] - 1] += 1
}
// 오등큰수 인덱스 검색
for idx in 0..<N {
while !answer.isEmpty && numCount[nums[answer.last!] - 1] < numCount[nums[idx] - 1] {
nums[answer.removeLast()] = nums[idx]
}
answer.append(idx)
}
for idx in answer {
nums[idx] = -1
}
print(nums.map{String($0)}.joined(separator: " "))
풀이 과정
이전에 풀었던 오큰수와 크게 다르지 않은 문제라서 거의 코드를 가져온 수준이였다.
대신 다른점이 있다면, 입력된 값 내에서 최대값만큼 배열을 생성해 주었고, count 를 계산하여
count 를 비교하며 오큰수와 같은 형식으로 풀었다.