Fascination
article thumbnail
Published 2021. 10. 3. 00:33
[C++] BOJ 13706 : 제곱근 CODE/BOJ

1. [문제]

 

13706번: 제곱근

첫째 줄에 양의 정수 N이 주어진다. 정수 N의 제곱근은 항상 정수이며, N의 길이는 800자리를 넘지 않는다.

www.acmicpc.net

 

 

2. [문제 풀이]

- 풀이 1) sqrt 라이브러리 사용

- 풀이 2) 이분탐색법 사용

  > mid의 제곱이 원래 값과 같아질 때까지 반복시킴

 

 

3. [코드]

- python: 백준 통과 코드

<python />
import math a=int(input()) print(math.isqrt(a))

 

- C++: 백준 통과 X --> 로직 문제인 것 같다는 결론이 많음

<c++ />
#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; } }

 

 

4. [채점 결과]

* 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
profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!