💡문제접근

  • 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

0개의 댓글