문제

 

풀이 코드

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 를 비교하며 오큰수와 같은 형식으로 풀었다.

+ Recent posts