문제
N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.
출력
M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.
제출한 답안
시도1)
탐색 속도를 높이기 위해 set 을 이용했다.
n = int(input())
A = set(map(int, input().split()))
m = int(input())
B = list(map(int, input().split()))
for b in B:
print(1) if b in A else print(0)
결과는 맞았고, 144ms가 소요되었다.
시도2)
if 문을 간략히 바꿔보았지만, 시간이 152ms로 늘어났다.
n = int(input())
A = set(map(int, input().split()))
m = int(input())
B = list(map(int, input().split()))
for b in B:
print((b in A) * 1, end=" ")
아마도 *1 연산 때문일 것 같다.
다른 사람 풀이 적용
1. 정수형으로 바꾸지 않고 직접 비교를 한 경우
즉, map을 이용하지 않고, 문자형인 상태로 비교하였다.
2. n과 m은 이용하지 않기 때문에, 굳이 변수에 저장하지 않는다.
input()
A = set(input().split())
input()
B = input().split()
for b in B:
print(1) if b in A else print(0)
'코딩테스트' 카테고리의 다른 글
[백준 25083번][Python] 새싹 : 문자열 출력 (0) | 2024.09.12 |
---|---|
[백준 11718번][Python] 그대로 출력하기 (0) | 2024.09.05 |
[백준 10813번][Python] 공 바꾸기 (0) | 2024.09.04 |
[백준 1546번][Python] 평균 (0) | 2024.09.02 |
[백준 10811번][Python] 바구니 뒤집기 (0) | 2024.09.02 |