반응형
1. 문제
2. 코드
원래 코드 (list 사용)
n, m = map(int, input().split())
s = []
cnt = 0
for i in range(n):
s.append(input())
for i in range(m):
test = input()
for j in range(n):
if test == s[j]:
cnt+=1
print(cnt)
정답 코드 (set 사용)
n, m = map(int, input().split())
s = set()
cnt = 0
for i in range(n):
s.add(input())
for i in range(m):
test = input()
if test in s:
cnt +=1
print(cnt)
3. 주요 알고리즘
파이썬에서는 자료구조( list, set, dict, etc )에 따라 시간 복잡도가 다르다.
set, dict은 해쉬 테이블 구조를 사용한다. 이 때, 해쉬 테이블 구조는 key 값으로 데이터를 받아오므로 list 같은 구조보다 훨씬 빠르다.
따라서 이 문제에서는 list보다 빠른 set이나 dict 자료형을 사용해야 한다.
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 2477번 - 참외밭 (파이썬) (0) | 2022.08.17 |
---|---|
[백준] 11478번 - 서로 다른 부분 문자열의 개수 (파이썬) (0) | 2022.08.17 |
[백준] 10815번 - 숫자 카드 (파이썬) (0) | 2022.06.27 |
[백준] 10866번 - 덱 (0) | 2022.02.14 |
[백준] 11718번 - 그대로 출력하기 (파이썬) (0) | 2022.02.09 |