Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 1920번- '수 찾기' (PYTHON 풀이) 본문
문제:

배열 두개를 입력 받고 두번째로 입력받은 값들이 첫번째 배열에 존재하는지 순서대로 확인해서 출력해주면 된다. 일치하면 1, 아니면 0을 출력한다.
풀이:
import sys
input = sys.stdin.readline
N = int(input())
N_a = set(map(int,input().split()))
M = int(input())
M_a = list(map(int,input().split()))
for i in M_a:
if i in N_a:
print(1)
else:
print(0)
처음에 sys를 안쓰고, for문도 두번째 배열 값 길이만큼 돌면서 체크한 뒤 새로운 리스트에 0,1을 추가해서 그 결과를 print으로 출력하는 방식으로 했는데 시간초과가 나서 pypy3로 진행하였다. 그런데도 시간초과가 발생해서 방법을 좀 바꿔야겠다고 생각했고 그 결과가 위 코드와 같다.
우선 리스트 하나를 없앴고 굳이 결과를 리스트에 담을 필요없이 print만 해주면 되니까 for문으로 두번째 배열에 있는 값이 첫번째 배열에 있는지 확인해서 바로 결과를 print 해주는 것으로 진행하였다.
아 그리고 필자는 처음부터 첫번째 배열은 set으로 진행했는데 게시판 보니까 두 배열 모두 리스트로 하면 또 시간초과가 나는 것 같다. set이 list보다 더 빠르고, 두번째 배열은 순서때문에 집합을 쓰면 안되지만 첫번째 배열은 상관없으니 첫번째 배열 한정으로 set을 써줘도 무관하다. (두번째 배열은 set 쓰면 안됨!! 순서에 따라 0, 1을 출력해야하므로)
'CODING 💻' 카테고리의 다른 글
| 백준 2577번- '숫자의 개수' (PYTHON 풀이) (0) | 2025.11.08 |
|---|---|
| 백준 2839번- '설탕 배달' (PYTHON 풀이) (0) | 2025.11.07 |
| 백준 2108번- '통계학' (PYTHON 풀이) (0) | 2025.11.05 |
| 백준 20920번- '영단어 암기는 괴로워' (PYTHON 풀이) (0) | 2025.11.04 |
| 백준 1037번- '약수' (PYTHON 풀이) (0) | 2025.11.03 |
