문제
정수 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이 자료형에는 비교적 자료로운 게 장점이 큰 것 같다.
최근에 감기에 걸렸다. 죽을 것 같았다.
지금은 그나마 몸 상태가 나아져 다시 글을 써 본다.
| 코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요! + 더 좋은 풀이 방법이 있다면 알려주세요 :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 2798번 : 블랙잭 (Python / 파이썬) (0) | 2023.08.06 |
|---|---|
| [백준] 11005번 : 진법 변환 2 (Python / 파이썬) (0) | 2023.08.04 |
| [백준] 9023번 : 단어 뒤집기 (Python / 파이썬) (0) | 2023.07.14 |
| [백준] 6603번 : 로또 (Python / 파이썬) (0) | 2023.07.11 |
| [백준] 17362번 : 수학은 체육과목 입니다 2 (Python / 파이썬) (0) | 2023.07.10 |