Algorithm/백준

[백준 스위프트] 1764번 듣보잡

devKen 2022. 7. 25. 22:16

요약

진영 씨는 듣지도 못한 사람과 보도 못한 사람을 구분하는 걸까..

듣도 못한 사람을 먼저 입력받고 바로 보도 못한 사람을 입력하면 된다. 그 후 두 집단의 교집합을 구하면 된다.

 

해답

교집합을 코드로 구현하다가 Set에는 교집합을 구하는 함수가 있다는 것을 알았다. Codility 문제인가 교집합을 코드로 구현해서 풀었던 거 같은데 그게 그렇게 푸는 게 아니었을지도 모르겠다.

let NM = readLine()!.split(separator: " ").map({Int(String($0))!})
let N = NM[0]
let M = NM[1]
var noHeard = Set<String>()
var noSaw = Set<String>()
for _ in 0..<N {
    let temp = readLine()!
    noHeard.insert(temp)
}
for _ in 0..<M {
    let temp = readLine()!
    noSaw.insert(temp)
}
var vertify = Set<String>()
intersection = noHeard.intersection(noSaw)
print(intersection.count)
for str in intersection.sorted() {
    print("\(str)")
}

Set, insert(), intersection()을 유용하게 썼다.