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: " "))
}
'알고리즘 > 탐색' 카테고리의 다른 글
백준[2805] 나무 자르기 (Swift) (0) | 2023.03.19 |
---|---|
백준[1654] 랜선 자르기 (Swift) (0) | 2023.03.19 |
백준[2805] 나무 자르기 (0) | 2023.03.11 |
백준[10816] 숫자 카드 2 (0) | 2023.03.11 |
백준[1920] 수찾기 (0) | 2023.03.11 |