백준
백준 10815번
백준파이썬개발자:프로젝트골드
2024. 1. 31. 17:45
반응형
import sys
n = int(sys.stdin.readline())
n_list=list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline())
m_list=list(map(int, sys.stdin.readline().split()))
for i in m_list:
if i in n_list:
print(1)
else:
print(0)
위 코드는 내가 초기에 작성한 코드이다.
문제 이것이 시간 초과가 떠버렸다.
그래서 다른 사람이 어떻게 풀었는지 살펴보았다.
import sys
n = int(sys.stdin.readline())
n_list=list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline())
m_list=list(map(int, sys.stdin.readline().split()))
#--------------------------------------------------
_dict = {} # 속도는 dictionary!
for i in range(len(n_list)):
_dict[n_list[i]] = 0 # 아무 숫자로 mapping
#--------------------------------------------------
#print(_dict)
"""
for i in m_list:
if i in _dict:
print(1)
else:
print(0)
"""
코드에 표시를 해두었다.
달라진코드가 보일것이다.바로 이코드이다.
_dict = {} # 속도는 dictionary!
for i in range(len(n_list)):
_dict[n_list[i]] = 0 # 아무 숫자로 mapping
딕셔너리가 리스트보다 빨라서 그런것같다.
(이런데 리스트는 왜쓰는거야 넘파이보다 느리고 용량도 더차지하면서)
그래서 리스트를 딕셔녀리로 바꾸어서 출력한다.
print(_dict)을 출력해보면
{6: 0, 3: 0, 2: 0, 10: 0, -10: 0}
이렇게 나온다.
기존 n_list는 [6,3,2,10,-10]인것에 반해서 dict은 사전을 만들어주는 것이기에 키값이 필요하다.
우리는 키를 사용할것이 아니무로 0을 넣었다.
반응형