코딩테스트

코딩테스트 제곱수 판별하기

김도현2 2023. 6. 13. 22:03
반응형

코딩테스트 제곱수 판별하기

 

 

문제 출력

 

 

출력 예시

 

 

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을 출력하고 끝납니다!