반응형
코딩테스트 제곱수 판별하기
문제 출력
출력 예시
n 이란 정수가 주어질때 이 정수가 자연수로 제곱이 가능한 제곱수인지 아닌지 구별하는 문제입니다.
64의 제곱수는 8, 144의 제곱수는 12, 그러므로 1을 출력하면 되고
145는 제곱수가 아니므로 2를 출력하면 되는 문제입니다.
let n = 144;
var answer = 0;
let togle = true;
let i = 0;
while(togle){
}
//1
정수가 몇이 나올지 모르니 그냥 while 문을 써봤습니다.
i를 i로 계속 곱하여 n이 나오면 그대로 return을 하여 끝내고
i * i 가 n을 넘으면 제곱수가 아니니 togle을 false 하여 while문을 멈추도록 하겠습니다.
바로 while문 내용을 채우겠습니다.
let n = 144;
var answer = 0;
let togle = true;
let i = 0;
while(togle){
i++
if(i * i == n){
return answer = 1;
}
if(i * i >= n){
answer = 2;
togle = false;
}
}
//1
증가식은 밑에두면 반복문이 끝나고 마지막으로 i가 증가되니 맨위에 위치했습니다.
i를 계속 증가하여 1 * 1 , 2 * 2 계속 하면 언젠가 n이랑 같아지거나 보다 더 높아지니 조건문을 활용하여
멈추면 됩니다. 그러면 최종적으로 제곱수인지 아닌지 판별이 가능합니다!
문제는 1 * 1, 2 * 2... 12 * 12 까지 가면 12 * 12는 144기 때문에 n과 똑같아 집니다.
그러면 answer엔 1을 출력하고 끝납니다!