티스토리 뷰

Computer/백준 풀이

[파이썬/백준1764] 듣보잡

벼랑끝과학자 2022. 12. 19. 14:27

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

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.

www.acmicpc.net

난이도는 실버4 마찬가지로 쉬운문제..

고민할 것도 없었고 그냥 set함수를 이용해 생성된 듣도못한집합과 보도못한집합을 만든 뒤 intersection을 통해 확인하려 했다. 게다가 파이썬에서 집합은 자동적으로 오름차순 정렬을 하기 때문에 문제에서 요구하는 사전순 정렬도 딱히 해줄 필요 없이 출력만 하면 될 것이라 생각했다.

from sys import stdin
from collections import Counter
# N : 듣도 못한 사람의 수
# M : 보도 못한 사람의 수
N, M = map(int, stdin.readline().split())

D_set = set()
B_set = set()

for i in range(N):
    D = stdin.readline().strip()
    D_set.add(D)

for j in range(M):
    B = stdin.readline().strip()
    B_set.add(B)

intersection_set = D_set.intersection(B_set)

# print("======================")
# print(intersection_set)
print(len(intersection_set))
for id in intersection_set:
    print(id)
 
아주 손쉽게, 틀렸습니다.

왜지

집합은 알아서 오름차순 정렬이 되는줄 알았는데 아닌경우도 있나보다.

그냥 확실하게 sorted()를 이용해서 정렬을 해준 뒤 출력을하니 정답을 맞출 수 있었다.

intersection_set = sorted(D_set.intersection(B_set))

이 줄에 sorted만 추가해주니 아주 손쉽게 해결되었다.

앞으로 집합을 사용할때 정렬은 그냥 sorted로 하는것으로...

댓글