시간제한 : 1초 / 메모리 제한 : 128MB
[문제]
N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.
[예제]
입력
5
4 1 5 2 3
5
1 3 7 9 5
출력
1
1
0
0
1
[코드]
import sys
input = sys.stdin.readline
print = sys.stdout.write
N = int(input())
tmp = set(map(int, input().split()))
M = int(input())
check = list(map(int, input().split()))
for i in check:
if i in tmp:
print("%s\n" % "1")
else:
print("%s\n" % "0")
시간 : 168ms, 메모리 : 50084kb
[생각]
처음 N개의 정수 뭉치에서 그 다음 M개의 정수 뭉치를 얼마나 빠르게 찾는지에 대한 문제. 처음에는 별 생각없이 tmp도 list로 만들었고, 당연하게도 시간제한 1초를 못넘기고 초과... set이 내부구현이 이진트리?였던것으로 기억해서 변경하고 하니 바로 해결이 됐다...
아예 C++로 처음부터 만들어도 괜찮을 것 같고 다른 방식도 좋을 것 같지만 일단 파이썬으로는 간단하게... 언어 이해도 좀 더 공부를 해야겠다... 2년 동안 거의 대부분을 까먹어버려서 다 새로운 것 같다.
'알고리즘' 카테고리의 다른 글
백준(1644) - 소수의 연속합 (0) | 2022.12.12 |
---|---|
프로그래머스 - 신고 결과 받기 (0) | 2022.12.07 |
프로그래머스 부대복귀 (0) | 2022.12.06 |
[Python] 백준 10989 - 수 정렬하기 3 (0) | 2022.10.10 |
[Programmers] Lv1. 시저 암호 (0) | 2022.09.28 |