코테

[해시] 백준 실버4 10816번: 숫자 카드2(Swift)

사파리 2023. 5. 29. 21:26

https://www.acmicpc.net/problem/10816

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

풀이과정

해당 문제는 Dictionary을 활용하면 문제를 해결할 수 있다.

let _ = Int(readLine()!)!
var nList: [Int] = readLine()!.split(separator: " ").map { Int($0)! }

let _ = Int(readLine()!)!
var mList: [Int] = readLine()!.split(separator: " ").map { Int($0)! }

var dict: [Int: Int] = [:]

for i in nList {
  if dict.keys.contains(i) {
    dict[i]! += 1
  } else {
    dict[i] = 1
  }
}

for i in mList {
  if dict.keys.contains(i) {
    print(dict[i]!, terminator: " ")
  } else {
    print(0, terminator: " ")
  }
}

위 코드와 같이 dictionary를 사용하여 주어진 수에 따른 카운팅을 해준다.