문제

정수 N이 주어졌을 때, N의 제곱근을 구하는 프로그램을 작성하시오.

 

 

조건 및 입출력

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

- 첫째 줄에 정수 N의 제곱근을 출력한다.

- 시간 제한: 2초 이내 / 메모리 제한: 512MB 이내

 

 

코드 (Python3)
num=int(input());
left=0; right=num;

while(1):
    mid=(left+right)//2;
    if(mid**2==num):
        print(mid);
        break;
    elif(mid**2<num):
        left=mid+1;
    else:
        right=mid-1;

 

 


여담

math.sqrt()을 호출하면 틀릴 것 같았다.

문제 카테고리를 보니 '이진 탐색'이어서 힌트를 찾아 문제를 풀이했다.

 

처음에는 C로 풀려고 했는데, 800자리가 넘어가는 수를 어떻게 처리해야 할지 도저히 방법이 떠오르지 않았다.

Python으로 문제를 풀고 다른 사람들은 어떻게 풀었는가 한 번 봤는데, C로 풀어서 맞춘 사람이 단 한 명 밖에 없다...

 

Python이 자료형에는 비교적 자료로운 게 장점이 큰 것 같다.

 


최근에 감기에 걸렸다. 죽을 것 같았다.

지금은 그나마 몸 상태가 나아져 다시 글을 써 본다.

 

코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요!

+ 더 좋은 풀이 방법이 있다면 알려주세요 :)

+ Recent posts