본문 바로가기
백준

[백준] 1764번 : 듣보잡 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 11. 22.
728x90
반응형

 

 

1764번: 듣보잡

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

해당 문제는 듣도 못한 사람과 보도 못한 사람의 이름을 각각 입력받아 듣도 보도 못한 사람을 찾아내는 문제이다.

딕셔너리를 생성하여 우선 듣도 못한 사람의 이름을 저장하고, 보도 못한 사람의 이름을 입력받아 듣도 못한 사람의 이름과 중복되는 이름인지 확인한다.

듣도 보도 못한 사람의 이름을 저장할 리스트를 생성하고 해당 이름이 듣도 보도 못한 사람이면 이름을 리스트에 추가한다. 최종 결과의 사람 수와 사전순으로 정렬한 결과를 출력한다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 듣도 못한 사람의 수와 보도 못한 사람의 수를 입력받는다. N, M = map(int, sys.stdin.readline().split())
  3. 듣도 못한 사람의 명단을 기록할 딕셔너리를 생성한다. d = {}
  4. 듣도 못한 사람의 수만큼 반복하며 for _ in range(N)
  5. 사람의 이름을 입력받는다. name = sys.stdin.readline().rstrip()
  6. 입력받은 사람의 이름을 딕셔너리에 저장한다. d[name] = True
  7. 듣도 보도 못한 사람을 저장할 리스트를 생성한다. result = list()
  8. 보도 못한 사람의 수만큼 반복하며 for _ in range(M)
  9. 사람의 이름을 입력받는다. name = sys.stdin.readline().rstrip()
  10. 만약 해당 사람이 듣도 못한 사람이라면 if (name in d)
  11. 듣도 보도 못한 사람의 리스트에 이름을 추가한다. result.append(name)
  12. 최종적으로 저장된 듣도 보도 못한 사람의 명단을 사전순으로 정렬한다. result.sort()
  13. 명단에 있는 사람의 수를 출력한다. print(len(result))
  14. 해당 사람의 이름을 출력한다. for i in result: print(i)
반응형

3. 소스코드

import sys

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

d = {}
for _ in range(N):
    name = sys.stdin.readline().rstrip()
    d[name] = True
    
result = list()
for _ in range(M):
    name = sys.stdin.readline().rstrip()
    if (name in d):
        result.append(name)
        
result.sort()
print(len(result))
for i in result:
    print(i)
728x90
반응형