Where who wants to meet someone

백준 Swift [14425] 문자열 집합 본문

백준 알고리즘 문제 기록/집합과 맵

백준 Swift [14425] 문자열 집합

Lust3r 2023. 8. 8. 14:37
728x90

난이도

실버 III

 

문제

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

 

14425번: 문자열 집합

첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.  다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어

www.acmicpc.net

 

내 답안

let nm = readLine()!.split(separator: " ").map { Int($0)! }
let n = nm[0]
let m = nm[1]

var s = Set<String>()
var texts = [String]()

for _ in 1...n {
    s.insert(readLine()!)
}

for _ in 1...m {
    texts.append(readLine()!)
}

var count = 0

texts.forEach { text in
    if s.contains(text) {
        count += 1
    }
}

print(count)

- 각 문자열을 다 저장한 다음에 똑같이 contains(_:) 메서드를 사용하는 방식을 사용

- 이전 문제에서 Array와 Set의 contains(_:)의 시간 복잡도 차이를 봤기 때문에 contains(_:)를 사용하는 s는 Set<String> 타입으로 설정

- texts 배열에 있는 각 항목을 forEach로 돌면서 s에 포함되어 있다면 count를 증가시키고 최종적으로 count값을 출력