MUKER_DEV with iOS

[swift] λ°±μ€€ - 1764번: λ“£λ³΄μž‘ λ³Έλ¬Έ

πŸ€– μ•Œκ³ λ¦¬μ¦˜/BAEKJOON

[swift] λ°±μ€€ - 1764번: λ“£λ³΄μž‘

MUKER 2023. 2. 26. 17:04
 

1764번: λ“£λ³΄μž‘

첫째 쀄에 듣도 λͺ»ν•œ μ‚¬λžŒμ˜ 수 N, 보도 λͺ»ν•œ μ‚¬λžŒμ˜ 수 M이 주어진닀. μ΄μ–΄μ„œ λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 걸쳐 듣도 λͺ»ν•œ μ‚¬λžŒμ˜ 이름과, N+2μ§Έ 쀄뢀터 보도 λͺ»ν•œ μ‚¬λžŒμ˜ 이름이 μˆœμ„œλŒ€λ‘œ 주어진닀.

www.acmicpc.net

문제 ν‘ΈλŠ” 데 μžˆμ–΄ 도움이 λ˜λ„λ‘ λ‚˜μ˜ 풀이와 κ°œμ„ λœ 풀이λ₯Ό μ˜¬λ¦½λ‹ˆλ‹€.
λ˜ν•œ 풀이 ν›„ λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό 보고 μ°Έκ³ ν• λ§Œν•œ 풀이도 μ˜¬λ¦½λ‹ˆλ‹€.

- λ¬Έμ œμ— 따라 λ‚˜μ˜ ν’€μ΄λ§Œ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
- ν•΄λ‹Ή 풀이듀은 풀이 쀑 ν•˜λ‚˜μΌ 뿐 μ΅œμ„ μ˜ ν’€μ΄λŠ” 아닐 수 μžˆμŠ΅λ‹ˆλ‹€.

 


 

λ‚˜μ˜ 풀이

let input = readLine()!.split(separator: " ").map { Int($0)! }
var arr = Set<String>()
var result = [String]()
for _ in 0..<input[0] {
    arr.update(with: readLine()!)
}
for _ in 0..<input[1] {
    let name = readLine()!
    if arr.contains(name) {
        result.append(name)
    }
}
print(result.count)
for i in result.sorted() { print(i) }

 

Set을 μ΄μš©ν•΄ 문제λ₯Ό ν’€ 수 μžˆμ—ˆλ‹€.

 

일반 λ°°μ—΄μ—μ„œ contains의 μ‹œκ°„λ³΅μž‘λ„λŠ” O(n)으둜 μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚˜μ˜¬κ²Œ λ»”ν•˜κΈ° λ•Œλ¬Έμ—

λ¬Έμ œλŠ” μ€‘λ³΅λ˜λŠ” 이름이 μ—†κΈ° λ•Œλ¬Έμ— Set의 containsλ₯Ό μ΄μš©ν•΄ ν’€μ—ˆλ‹€.

Set의 contains의 μ‹œκ°„λ³΅μž‘λ„λŠ” O(1)이닀.


 

 

μ°Έκ³ ν• λ§Œν•œ 풀이

μ½”λ“œ