Python/알고리즘 - 백준

백준 1764 파이썬 문제 풀이

Jong_seoung 2023. 9. 22. 11:08
반응형

백준 1764 파이썬 문제 풀이

 

문제 링크 

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

 

1764번: 듣보잡

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

www.acmicpc.net


문제

입력

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.

듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.

 

출력

듣보잡의 수와 그 명단을 사전순으로 출력한다.

 

제출 코드

a, b = map(int, input().split())
hear = set()
see = set()
cnt = 0

for i in range(a):
    hear.add(input())

for i in range(b):
    see.add(input())

result = sorted(list(hear & see))

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

 

오답 코드

더보기
a, b = map(int, input().split())
hear = []
cnt = 0
result = []

for i in range(a):
    hear.append(input())

for i in range(b):
    see = input()
    if hear.count(see) >= 1:
        result.append(see)
        cnt += 1

print(cnt)

for i in result:
    print(i)

문제점 - 시간 초과, 출력형식

해결 방법

1. input을 sys.stdin.readline으로 변경 - 출력형식 에러 발생(개행문자)

2. 사전순으로 출력해야하기 때문에 sorted를 이용하여 정렬해주기

 

어려웠던 점

1. 시간 초과 해결

2. set, list의 특성을 잘 이해를 못했음

 

반응형