정말 화나게 하는 문제다. 하지만 모든 문제는 답이 있다. 백준 시스템은 절대 틀리지 않는다. 내가 틀릴뿐
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, const char * argv[]) {
ios_base::sync_with_stdio(0);cin.tie(0);
int n;
cin >> n;
int start, end, mid;
start = 0; end = n;
while(start <= end){
mid = (start + end)/2;
if(mid*mid == n){
cout << mid << "\n";
break;
}
else if(mid*mid < n){
start = mid+1;
}
else{
end = mid-1;
}
}
return 0;
}
이 코드는 틀렸다. 런타임 에러가 났다.
다른 사람코드를 가져와 보았다.
# 이분탐색
n = int(input())
low = 1
high = n
while 1:
mid = (low + high) // 2
if mid ** 2 == n:
print(mid)
break
elif mid ** 2 > n:
high = mid - 1
elif mid ** 2 < n:
low = mid + 1
뭐가 다른거지?? 파이썬으로 돌려서 그런건가? 웃기지도 않다. ㅋ
나 그냥 math 함수 써서 python으로 돌렸는데 sqrt 말고 isqrt 써야한다고 한다. !
'cs > 백준' 카테고리의 다른 글
백준 골드 달성 푸하하 (0) | 2023.05.01 |
---|---|
[C++] 백준 2309번: 일곱 난쟁이 (3) | 2022.07.22 |
[C++] 백준 2512번: 예산 (멍청한 짓 하지 않기, 그래도 풀어서 기분 좋아) (0) | 2022.07.20 |
[C++] 백준 10816번: 숫자 카드2 #auto, upper_bound & lower_bound (2) | 2022.07.15 |
[C++] 백준 1920번: 수 찾기 #ios_base::sync_with_stdio(0);cin.tie(0); (0) | 2022.07.14 |