[BOJ / Python] 1764 듣보잡

도니·2023년 4월 20일
0

BOJ / Python

목록 보기
98/104
post-thumbnail

문제

백준 1764 듣보잡

코드

부족한 코드 -- 시간 초과

import sys

n, m = map(int, sys.stdin.readline().split())
heard = []
for _ in range(n):
    heard.append(sys.stdin.readline().rstrip())
seen = []
for _ in range(m):
    seen.append(sys.stdin.readline().rstrip())
    
who_are_u = []
for x in heard:
    if x in seen:
        who_are_u.append(x)

print(len(who_are_u))
who_are_u.sort()
for x in who_are_u:
	print(x)

리스트를 사용해서 리스트에 있는지 없는지를 확인하고자 하였으나... 시간 초과가 나왔다.
(🥲 시간 초과 죽여줘......)

더 나은 코드: set() 이용하기

import sys

n, m = map(int, sys.stdin.readline().split())
heard = set()
for _ in range(n):
    heard.add(sys.stdin.readline().rstrip())
seen = set()
for _ in range(m):
    seen.add(sys.stdin.readline().rstrip())

who_are_u = sorted(list(heard & seen))
print(len(who_are_u))
for x in who_are_u:
    print(x)

코드 설명

💡 집합 자료형: set() 사용하기!
heardseen을 각각 하나의 집합이라고 할 때,
우리가 구해야하는 것은 heard U seen

두 집합 heardseen의 교집합을 구하기 위해서 &을 사용했고, 그 명단을 사전순으로 출력하라고 하였으므로 sorted()로 정렬하였다.

[참고자료] 점프 투 파이썬 - 집합 자료형(set)

⭐️ 집합 자료형의 특징

  • 중복 허용 X
  • 순서가 없다(Unordered)
profile
안녕하세요, 🌱새싹개발자 도니💡입니다!

0개의 댓글

관련 채용 정보