백준 1764번 풀이

BOJ/[BOJ] Python 2023. 10. 29. 22:34
반응형

문제

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

 

1764번: 듣보잡

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

www.acmicpc.net

 

두 집합(듣지 못함/보지 못함)의 교집합을 출력하시오

 

풀이

이 문제는 굉장히 심플한 문제다. 푸는 것 자체는 그런데 출력이 씁...

 

import sys

N, M = map(int, sys.stdin.readline().split())

not_heard = set() #듣지 못한 사람
not_saw = set() # 보지 못한 사람

for _ in range(N):
    not_heard.add(sys.stdin.readline().rstrip())

for _ in range(M):
    not_saw.add(sys.stdin.readline().rstrip())

일단 집합(set)을 두 개 만들건데, 첫번째는 듣지 못한 사람이고 두번째는 보지 못한 사람이다. 아니 입력 순서가 듣-보임. 아무튼, 빈 집합을 만들고 입력 받자마자 추가하게 해 준다. 혹시나 중복되더라도 set 자료형은 알아서 중복 걸러주니까 걱정 ㄴㄴ.

 

not_heard_saw = not_heard & not_saw
not_heard_saw = list(not_heard_saw)
not_heard_saw.sort()

print(len(not_heard_saw))
for i in not_heard_saw:
    print(i)

다음은 출력인데... 일단 아래 세 줄은 길이와 요소를 출력하는거니까 설명은 생략한다. 솔직히 이거 풀 짬이면 다들 알잖아요 뭔지...

 

위의 세 줄은 순서대로 1) 교집합을 구하고 2) 그걸 리스트로 바꿔서 3) 정렬하는 코드이다. 출력 사전순이니까 정렬해야지.

 

import sys

N, M = map(int, sys.stdin.readline().split())

not_heard = set() #듣지 못한 사람
not_saw = set() # 보지 못한 사람

for _ in range(N):
    not_heard.add(sys.stdin.readline().rstrip())

for _ in range(M):
    not_saw.add(sys.stdin.readline().rstrip())

not_heard_saw = not_heard & not_saw
not_heard_saw = list(not_heard_saw)
not_heard_saw.sort()

print(len(not_heard_saw))
for i in not_heard_saw:
    print(i)

그래서 놀랍게도 이걸로 한방에 맞췄다.

반응형

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 11478번 풀이  (0) 2023.12.10
백준 1269번 풀이  (0) 2023.10.29
백준 1934번 풀이  (0) 2023.10.19
백준 10816번 풀이  (0) 2023.08.10
백준 7785번 풀이  (0) 2023.08.04
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

방명록