[문제]
[문제 풀이]
- 풀이 1) sqrt 라이브러리 사용
- 풀이 2) 이분탐색법 사용
> mid의 제곱이 원래 값과 같아질 때까지 반복시킴
[코드]
- python: 백준 통과 코드
import math
a=int(input())
print(math.isqrt(a))
- C++: 백준 통과 X --> 로직 문제인 것 같다는 결론이 많음
#include <iostream>
#include<math.h>
using namespace std;
int main() {
int n;
cin>>n;
int low = 1;
int high = n;
int mid;
while (1) {
mid = (low + high)/ 2;
if(pow(mid,2) == n) {
cout<<mid;
break;
}
else if(pow(mid,2) > n)
high = mid - 1;
else if(pow(mid,2)<n)
low = mid + 1;
}
}
[채점 결과]
* python 문법을 까먹어서 자꾸 int로 변환하지 않고 선언해서,, 런타임 에러가 많이 났고 그냥 sqrt를 사용하면 안되고 isqrt를 사용해야 풀렸던 문제임 c++이 안되는 이유는 로직문제인 것 같다는 의견이 많다
'CODE > BOJ' 카테고리의 다른 글
[C++] BOJ 1769 : 3의 배수 (0) | 2021.10.03 |
---|---|
[C++] BOJ 10829 : 이진수 변환 (0) | 2021.10.03 |
[C++] BOJ 2941 : 크로아티아 알파벳 (0) | 2021.10.02 |
[C++] BOJ 15953 : 상금 헌터 (0) | 2021.10.02 |
[C++] BOJ 5086 : 배수와 약수 (0) | 2021.10.02 |