문제
코드
My answer
import sys
input=sys.stdin.readline
n = int(input())
def binary_search(target,start,end):
mid=(start+end)//2
if(start>end):
return mid+1
tmp=mid*mid
if(tmp==target):
return mid
elif(tmp<target):
return binary_search(target,mid+1,end)
elif(tmp>target):
return binary_search(target,start,mid-1)
print(binary_search(n,0,n))
Another answer
풀이
나는 이분탐색 문제들을 모아서 풀고 있었기 때문에 바로 이분탐색으로 접근해서 쉽게 풀 수 있었지만, 카테고리가 정해져있지 않았다면 어떻게 풀지 막막했을 것 같다. 우선 이분탐색으로 푼다고하면 어차피 이건 1~n까지 순서대로 하는 것이므로 따로 리스트를 만들필요없이 그냥 인덱스를 곱해주면 됐다. 예전에는 아래에 있는 코드로 풀렸다고 하는데 부동소수점?관련 테스트 케이스가 추가되면서 틀렸다고 한다. 아래는 그냥 단순하게 0.5제곱근을 해주고 정수가 나오면 끝내는 코드이다.
def solution(n):
answer = 0
num = n ** 0.5
if num == int(num):
answer = (num+1) ** 2
else:
answer = -1
return answer
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #2805- 나무 자르기 (0) | 2023.09.13 |
---|---|
[Python] 백준 #19637 - IF문 좀 대신 써줘 (1) | 2023.09.12 |
[Python] 백준 #10815- 숫자 카드 (0) | 2023.09.11 |
[Python] 백준 #1789- 수들의 합 (0) | 2023.09.11 |
[Python] 백준 #12851- 숨바꼭질 2 (0) | 2023.09.11 |