티스토리 뷰

문제링크 : https://www.acmicpc.net/problem/13706

def binary_search(low, high) :
    while(1) :
        mid = (low + high) // 2
        if mid**2==n : 
            return mid
        elif mid**2>n :
            high = mid - 1
        elif mid**2<n:
           low = mid + 1
            
n=int(input())
            
print(binary_search(1, n))

이번 문제는 큰수 계산이 필요하여 C++은 너무 복잡해질 것 같아서 파이썬으로 풀었다.

푸는 방법은 sqrt()함수를 통해 쉽게 구할수도 있고 이분탐색을 통해 풀 수 있는데 공부할겸 이분탐색으로 풀었다.

조건이 맞을 때 (제곱근일 때) 탈출하는 조건으로 무한루프를 돌고, low값과 high값의 mid 값을 기준으로 low 범위 및 hight 범위를 계속해서 반으로 줄여가며 탐색한다.

'Study > 백준' 카테고리의 다른 글

[백준 25644번] 최대 상승 (C++)  (0) 2023.02.05
[백준 3135번] 라디오 (C++)  (0) 2023.02.05
[백준 2748번] 피보나치 수2 (C++)  (0) 2023.02.05
[백준 1032번] 명령 프롬포트 (C++)  (0) 2023.02.05
[백준 9084번] 동전 (C++)  (0) 2023.02.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함