알고리즘/탐색
백준[10816] 숫자 카드 2 (Swift)
HJ39
2023. 3. 19. 14:52
swift로 백준 문제를 풀 때는 시간초과를 항상 고려해야한다.
처음에는 C++에서 풀었던 방식으로 배열을 정렬하고 해당 요소의 첫 번째 인덱스와 마지막 인덱스를 구해서 빼려고 했지만
곧바로 시간초과.. ㅠ
dictionary를 이용하면 배열을 도는 그런 시간을 아낄 수 있기에 dictionary를 사용하여 문제를 해결하였다.
import Foundation
func numberCard2(){
let _ = readLine()!
var arryM = readLine()!.split(separator: " ").map({Int($0)!})
let _ = readLine()!
let arryN = readLine()!.split(separator: " ").map({Int($0)!})
var dict = [Int: Int]()
var result = [Int]()
arryM.forEach { data in
dict.updateValue((dict[data] ?? 0) + 1, forKey: data)
}
arryN.forEach{ data in
result.append(dict[data] ?? 0)
}
print(result.map{String($0)}.joined(separator: " "))
}