본문 바로가기

알고리즘 공부/프로그래머스 > Python3

[프로그래머스] 정수 제곱근 판별

https://programmers.co.kr/learn/courses/30/lessons/12934

 

코딩테스트 연습 - 정수 제곱근 판별

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함

programmers.co.kr

 

[정답]

 

1. 1~n+1까지 반복문을 돌면서, 만약 i**2==n, 즉 i가 n의 제곱근이면 answer=(i+1)**2를 넣어준다.

( 어짜피 for문을 다 돌 경우는 별로 없으니 처음에 for문의 마지막 값을 n으로 지정하였다. 그러나 정확성 테스트에서 하나의 실패가 떴다. 문제의 제한사항을 보면, 'n은 1이상 50000000000000 이하인 양의 정수입니다.' 라고 쓰여있다. for문의 마지막 값을 n으로 지정하면, n이 1일 경우 for문은 1~0을 도는 꼴이므로 for문의 마지막 값은 n+1로 지정해준다. )

2. 만약 반복문을 돌다가 i**2>n이 되는 순간, 그 다음 루프를 돌아도 제곱근은 찾을 수 없으므로 answer=-1로 하고 break한다.

3. answer을 리턴한다.