1. 문제
듣보잡
2. 코드
N, M = map(int, input().split())
dict = {}
for _ in range(N + M):
name = input()
dict[name] = dict.get(name, 0) + 1
answer = sorted([name for name, count in dict.items() if count == 2])
print(len(answer))
for name in answer:
print(name)
3. 로직
1. 입력과 딕셔너리 생성하기
N, M = map(int, input().split())
dict = {}
for _ in range(N + M):
name = input()
dict[name] = dict.get(name, 0) + 1
- 두 개의 정수 N과 M을 입력 받는다.
여기서 N은 듣도 못한 사람의 수를, M은 보도 못한 사람의 수를 의미한다.
- 듣도 못한 사람과 보도 못한 사람의 정보를 저장할 dict 딕셔너리를 생성한다.
- for 반복문을 통해 N + M 번 반복하면서 이름을 입력받고, dict 딕셔너리에 저장한다.
- 각 반복마다 이름을 입력받는다.
- 이름이 딕셔너리에 존재한다면, 해당 이름의 횟수를 1 증가시킨다.
- 이름이 딕셔너리에 존재하지 않는다면, 기본값과 새로운 키를 딕셔너리에 추가한다.
2. 듣도 보도 못한 사람 찾기
answer = sorted([name for name, count in dict.items() if count == 2])
- 명단을 순회하면서 이름(name)과 해당 이름의 등장 횟수(count)를 가져온다.
- 두 번 나타난 경우엔 듣도 보도 못한 사람에 해당한다.
- 듣도 보도 못한 사람의 명단을 저장할 answer 리스트에 추가한다.
- 명단을 사전순으로 출력하기 위해 정렬을 수행한다.
3. 출력하기
print(len(answer))
for name in answer:
print(name)
- 듣도 보도 못한 사람의 인원을 출력한다.
- 이미 정렬된 리스트인 answer 를 활용하여 이름을 오름차순으로 출력한다.