문제
https://www.acmicpc.net/problem/1764
코드
import sys
N, M = map(int, sys.stdin.readline().rstrip().split())
lst = [None] * N
ans = []
for i in range(N):
lst[i] = sys.stdin.readline().rstrip()
lst.sort()
for _ in range(M):
key = sys.stdin.readline().rstrip()
pl = 0
pr = N-1
while True:
pc = (pl + pr) // 2
if lst[pc] == key:
ans.append(key)
break
elif lst[pc] < key:
pl = pc + 1
elif lst[pc] > key:
pr = pc - 1
if pl > pr:
break
print(len(ans))
ans.sort()
print('\n'.join(ans))
sort와 이진 탐색으로 풀었습니다.
정답도 사전순으로 정렬해서 출력하는건데 문제를 제대로 안봐서 고생했습니다..
'IT > 알고리즘' 카테고리의 다른 글
알고리즘 - 퀵 정렬(1) (0) | 2020.12.01 |
---|---|
백준 - 1946번 (0) | 2020.11.25 |
백준 - 10610번 (0) | 2020.11.25 |
백준 - 10815번 (0) | 2020.11.24 |
알고리즘 - 셸 정렬 (0) | 2020.11.24 |
댓글