알고리즘/탐색

백준[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: " "))
}

 

'알고리즘 > 탐색' 카테고리의 다른 글

백준[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