개발의 흔적

알고리즘 테스트# 9. 정수 제곱근 판별 본문

코딩테스트 연습

알고리즘 테스트# 9. 정수 제곱근 판별

남들에게 도움을 주는 백엔드 개발자가 되자 2020. 7. 22. 17:33

안녕하세요.

 

프로그래머스에 있는 "정수 제곱근 판별" 알고리즘 문제를 풀어보겠습니다.

 

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

 

출력 : 

121 144
3 -1

 

코드 : 

 

* 문제 해설 *

 

정수 : 121,3

API사용안하고 제곱근구하는방법

 

1. 제곱근이란 : 정수a의값을 두번 곲한 값

 

121의 제곱근을 구하기 위해 for문을 i부터 121까지의 길이만큼 곱합니다.

( i * i == 121) 

 121 -> 11 * 11의 제곱근이 나옵니다.

 

 

* 코드 해설 *

 

현재 제곱근을 Math.sqrt()의 api를 사용하여 제곱근을 구합니다.

Math.sqrt()는 double형이기에 현재 선언되어있는 값처럼 long으로 처리합니다.

제곱근이 아닌 값들은 1로 값들이 선언됩니다.

문제에 나와있는것처럼 -1을 해줍니다.

 

제곱근인지 아닌지를 확인하기 위해서

제곱근 * 제곱근 == 제곱값을 확인하여 동일한 값이라면 

(제곱근 * 1) * (제곱근 * 1)를 하여 리턴합니다.

 

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

Comments