티스토리 뷰

코딩테스트 연습 - 정수 제곱근 판별 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr

문제 설명 

예를들어  : 주어진 수가 121, 11의 제곱이면 (11 + 1) ^ 2 리턴, 만약 132처럼 어떤 숫자도 제곱해서 132가 안된다면 -1을 리턴


내 코드

function solution(n) {
  let answer = 0;
  let tempNum = 1;
  while (n >= Math.pow(tempNum, 2)) {
    if (n === Math.pow(tempNum, 2)) {
      return Math.pow(tempNum + 1, 2); 
    }
    // console.log(tempNum) 
    tempNum++
  } 
  return -1;
}

while문을 임의의 숫자의 제곱이 n 보다 작거나 같을 동안 돌려서 만약 둘이 같으면 리턴, 안면 -1 리턴

 


다른 사람 코드

반복문 대신에 n과 n의 제곱근(Math.sqrt(n))를 비교해서 나머지가 있는지 없는지로 만들었다. 반복문을 쓰지 않기 때문에 이 방법이 더 좋은 것 같다.

 


내 개정 코드

function solution(n) {
  let answer = 0;
  if(n % Math.sqrt(n) === 0 ) return Math.pow(Math.sqrt(n) + 1, 2);
  return -1;
}

제곱근을 구해서 만약 n과 나눴을 때 나머지가 없다면 값을 리턴한다. 

 

반복문이 없기 때문에 경과시간도 압도적으로 빠르다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함