n = int(input())
q = 0
t = n
while q <= t:
mid = (q + t) // 2
if mid ** 2 < n:
q = mid + 1
else:
t = mid - 1
print(q)
전체적인 개요는 시작점과 끝점을 정한 후 조건문에 따라 시작점이나 끝점을 바꿔주면서 정답에 도달하는 것이다.
이분 탐색에서 자주 사용하는 mid를 사용하여 좀 더 빠르고 효율적인 계산이 가능하게 하였다.
처음에는 t = n을 쓰지 않고 while문에 t 대신 n을 넣어봤는데 계속 런타임 에러가 났는데 이유는 잘 모르겠다.
'코딩테스트 > baekjoon' 카테고리의 다른 글
[스택 & 큐] 백준 1935번 (C언어) - 후위 표기식2 (0) | 2023.05.09 |
---|---|
[스택 & 큐] 백준 2164번 (C언어) - 카드2 (0) | 2023.05.09 |
[이분 탐색] 백준 10815번 (파이썬) : 숫자 카드 (0) | 2023.04.05 |
[이분 탐색] 백준 1789번 (파이썬) : 수들의 합 (0) | 2023.04.05 |
[완전 탐색] 백준 5568번 (파이썬) : 카드 놓기 (0) | 2023.03.24 |
댓글