반응형
● 문제 출처 Site
1920번: 수 찾기
첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.
www.acmicpc.net
[코드]
def Count(num):
lt = 0
rt = len(a)-1
cnt = 0
while lt <= rt:
mid = (lt+rt)//2
if num == a[mid]:
cnt = 1
return cnt
elif num < a[mid]:
rt = mid - 1
else:
lt = mid + 1
return cnt
n = int(input())
a = list(map(int, input().split()))
m = int(input())
b = list(map(int, input().split()))
a.sort()
for x in b:
if Count(x) > 0:
print('1')
else:
print('0')
[느낀 점]
애초에 문제 분류를 이분 탐색 으로 설정해서 풀었기 때문에, 생각하는데는 많이 어렵진 않았다. 하지만 정확하게 문제를 이해하는게 좀 힘들었다. 아직 문제에 대한 이해력이 많이 부족한것 같다. 그리고 과연 이 문제가 이분 탐색이라고 안나왔다면 내가 풀 수 있었을까...? 라는 의구심도 든다.
또한, 코드를 옮겨서 리뷰를 해보니 변수 선언에 좀 더 신중해야 겠다는 생각이 든다.
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[파이썬] 백준 5622번: 다이얼 (0) | 2020.09.08 |
---|---|
[파이썬] 백준 1475번 <방 번호> (0) | 2020.05.09 |
[파이썬] 백준 1157번 <단어의 개수> (0) | 2020.05.09 |
[파이썬] 백준 2003번: 수들의 합2 <시간초과> (0) | 2020.04.30 |
[파이썬] 백준 10804번: 카드 역배치 (0) | 2020.04.30 |