💡문제접근
Counter
클래스를 이용해서 문제를 해결했다. 선영이와 상근이가 보유하고 있는 CD의 개수가 다를 수 있으므로 두 사람 중 CD를 적게 가지고 있는 사람을 기준으로 하여 key값을 가지고 있는지 여부를 확인해 두 사람이 동시에 가지고 있는 CD의 개수를 출력해주는 방식으로 코드를 작성했다.
- set(집합)과 dictionary(딕셔너리)에서
in
연산의 시간 복잡도는 O(1)
이고 list(리스트)에서 in
연산의 시간 복잡도는 O(N)
이다.
💡코드(메모리 : 307644KB, 시간 : 2680ms)
from collections import Counter
import sys
input = sys.stdin.readline
while True:
N, M = map(int, input().strip().split())
if N == 0 and M == 0:
break
sun = []
for _ in range(N):
sun.append(int(input()))
sun_Counter = Counter(sun)
sang = []
for _ in range(M):
sang.append(int(input()))
sang_Counter = Counter(sang)
tot = 0
if N > M:
for i in sang_Counter.keys():
if i in sun_Counter:
tot += 1
else:
for i in sun_Counter.keys():
if i in sang_Counter:
tot += 1
print(tot)
💡소요시간 : 7m