[프로그래머스] 제곱수 판별하기

엘크·2023년 9월 11일
0

programers

목록 보기
3/9
post-custom-banner

문제 설명


어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다.
정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

제한사항


  • 1 ≤ n ≤ 1,000,000

입출력 예


nresult
1441
9762

입출력 예 설명


입출력 예 #1

  • 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.

입출력 예 #2

  • 976은 제곱수가 아닙니다. 따라서 2를 return합니다.

내가 푼 답


function solution(n) {
    return Math.sqrt(n) % 1 === 0 ? 1 : 2
}

code flow


가장 중요한 것

  • 제곱수를 판별해야한다.

그 다음으로 든 생각

  • 이것도 역시 Boolean 값 ? true : false / 1 : 2 반환하는 것을 사용하자.
  • 제곱근을 구하기 위해선 n을 무한히 나눠줘야한다.
  • 무한히 나눠주는것은 끝이 없다, 다른 해법은 없을까?
  • 그렇다면 Math.sqrt() 라는 함수를 사용해보자.

다른 해답은 없을까?


function solution(n) {
    const result = Math.pow(n, 0.5); 
    if (Number.isInteger(result)) {
        return 1;
    } else {
        return 2;
    }
}

배워둬야 할 것

  • Math.pow() : 첫 번째 매개변수를 두 번째 매개변수로 제곱하는 역할을 하는 함수.
    Math.sqrt() 가 제곱근을 구한다면, Math.pow()는 거듭제곱을 한다.
    => 이게 왜 다른건가?
  • isInteger : 주어진 값이 정수인지 여부를 확인하는 메서드.
    - Why? : 부동 소수점 숫자와 정수를 구별하기 위해서입니다.
profile
꾸준하게 하면 된다 언젠가는..?
post-custom-banner

0개의 댓글