코딩 테스트 문제/프로그래머스

정수 제곱근 판별

J520 2018. 9. 14. 20:22

문제





먼저 어떤 정수 n값을 solution()을 통해 받는다. 그 후 n의 제곱근과 정수형으로 변환한 n의 제곱근의 몫이 1과 같은 지 확인한다. 만약 n의 제곱근(이후 x라고 하겠음.)이 정수형이면, x/정수형으로 변환한 x의 몫은 1이 될 것이다. 그러나 x가 실수형이면, x/정수형으로 변환한 x의 몫은 1.x.....로 1이상의 실수형이 될 것이다. 이렇게 어떤 n값이 어떤 정수 x의 제곱인지 아닌지 판단한다. 

 그 후, x가 정수라면 문제의 지시에 따라 (x+1의 제곱)을 리턴 한다. x가 정수가 아니라면(=n값이 어떤 정수 x의 제곱이 아니라면) -1을 리턴 한다.

 아래는 11의 제곱인 121을 입력했을 때, (11+1)의 제곱인 144를 반환한 실행 결과이다.




실행 결과 :

 아래는 3을 입력했을 때, -1을 반환한 실행 결과이다.





 문제를 읽었을 때, 제곱근을 구하는 함수와 제곱을 구하는 함수를 사용하면 되겠다고 생각했다. 그런데 n의 제곱근을 구한 뒤에, 그것이 정수인지 실수인지 판별하는 것을 어떻게 해야 하나 조금 고민했다. 그러다 만약 n의 제곱근 값이 정수형이면, 정수형으로 변환하든지 말든지 n을 n으로 나누었을 때의 몫이 1이 나오겠구나 하는 생각이 들었다. 

 한 가지 걸리는 점은 n이 1 이상 인 숫자인데, 그에 대한 예외 처리를 해주지 않았다는 것을 까먹었다는 점이다. 추가 할 수도 있었지만, 이미 캡쳐를 다 했으니, 머릿속으로만 예외 처리를 하는 것으로 마무리 해야겠다.




출처 : https://programmers.co.kr/learn/courses/30/lessons/12934?language=java


'코딩 테스트 문제 > 프로그래머스' 카테고리의 다른 글

이상한 문자 만들기  (0) 2018.09.15
완주하지 못한 선수  (0) 2018.09.14
시저 암호  (0) 2018.09.13
문자열 내 마음대로 정렬하기  (0) 2018.09.12
소수 찾기  (0) 2018.09.08