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

[문제]

 

13706번: 제곱근

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

www.acmicpc.net

 

 

[문제 풀이]

- 풀이 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
profile

Fascination

@euna-319

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