Where who wants to meet someone
백준 Swift [1764] 듣보잡 본문
728x90
난이도
실버 IV
문제
https://www.acmicpc.net/problem/1764
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
내 답안
var notHeardPeople = Set<String>()
var notSawPeople = Set<String>()
var notHeardAndSawPeople = [String]()
let nm = readLine()!.split(separator: " ").map { Int($0)! }
for _ in 1...nm[0] {
notHeardPeople.insert(readLine()!)
}
for _ in 1...nm[1] {
notSawPeople.insert(readLine()!)
}
if notHeardPeople.count > notSawPeople.count {
for person in notHeardPeople {
if notSawPeople.contains(person) {
notHeardAndSawPeople.append(person)
}
}
} else {
for person in notSawPeople {
if notHeardPeople.contains(person) {
notHeardAndSawPeople.append(person)
}
}
}
notHeardAndSawPeople.sort()
print(notHeardAndSawPeople.count)
for i in notHeardAndSawPeople {
print(i)
}
- 듣지도 못한 사람과 보지도 못한 사람 그룹에 각각 입력값을 insert하고, 사람이 더 많은 그룹을 기준으로 삼아
듣지도 못한 사람이 더 많다면, 그 사람들을 기준으로 보지도 못한 사람 그룹에 포함되어 있으면 듣보그룹에 추가하고
보지도 못한 사람이 더 많다면, 그 사람들을 기준으로 듣지도 못한 사람 그룹에 포함되어 있으면 듣보그룹에 추가하는 방식을 사용
- 이후 사전순으로 출력하기 위해 sort를 하고, 듣보그룹의 count와 각각의 member를 출력하는 방식을 사용했다
- (작업이 많고 비효율적으로 보여 당연히 시간 초과가 날거라 생각하고 다른 방법을 찾아봐야지 했는데..)
'백준 알고리즘 문제 기록 > 집합과 맵' 카테고리의 다른 글
백준 Swift [11478] 서로 다른 부분 문자열의 개수 (0) | 2023.08.11 |
---|---|
백준 Swift [1269] 대칭 차집합 (0) | 2023.08.11 |
백준 Swift [10816] 숫자 카드 2 (0) | 2023.08.11 |
백준 Swift [1620] 나는야 포켓몬 마스터 이다솜 (0) | 2023.08.11 |
백준 Swift [7785] 회사에 있는 사람 (0) | 2023.08.08 |