듣보잡
풀이
문제를 보고 바로 작성해서 아래처럼 풀었다.
듣지 못해본 사람
보지 못해본 사람
의 명단을 받아서 중복되는 사람인 듣도보도못한사람을 사전순으로 출력하는 것이다.
따라서 각 입력받고 순서대로 중복되는지 확인하는 방법을 사용했다.
그러나 시간 초과가 발생했다.
import sys
N, M = map(int, sys.stdin.readline().split())
unknown_heard = []
unknown_look = []
for _ in range(N):
unknown_heard.append(sys.stdin.readline().strip())
for _ in range(M):
unknown_look.append(sys.stdin.readline().strip())
unknown_look_heard = []
for i in range(N):
if unknown_heard[i] in unknown_look:
unknown_look_heard.append(unknown_heard[i])
unknown_look_heard.sort()
print(len(unknown_look_heard))
for i in range(len(unknown_look_heard)):
print(unknown_look_heard[i])
시간 초과의 발생으로 인해 어떤 방법이 있나 했는데, 바로 set을 사용해버리는 방법이 있었다.
애초에 각각에서 중복되는 이름은 없었으니, set으로 받아두고, 그 set을 이용해서 듣지 못해본 사람과 보지 못해본 사람 명단 중 중복되는 인원을 ㅃ보아내는 것이다. 이것을
unknown_look_heard = list(unknown_heard & unknown_look)
위의 코드로 나타내주었다.
그러니 해결되었다.
전체코드는 아래 코드와 같다.
import sys
N, M = map(int, sys.stdin.readline().split())
unknown_heard = set()
unknown_look = set()
for _ in range(N):
unknown_heard.add(sys.stdin.readline().strip())
for _ in range(M):
unknown_look.add(sys.stdin.readline().strip())
unknown_look_heard = list(unknown_heard & unknown_look)
unknown_look_heard.sort()
print(len(unknown_look_heard))
for name in unknown_look_heard:
print(name)
'알고리즘 > 백준' 카테고리의 다른 글
백준 실버1 1931. 회의실 배정 (python) (0) | 2024.03.02 |
---|---|
백준 실버4 11399. ATM (python) (0) | 2024.03.02 |
백준 실버2 1012. 유기농 배추 (python) (1) | 2024.03.01 |
백준 실버2 18111. 마인크래프트 (python) (0) | 2024.02.29 |
백준 실버3 1003. 피보나치 함수 (python) (1) | 2024.02.24 |