[프로그래머스] 정수 제곱근 판별 (Math.pow, break)

조아연·2024년 7월 1일

JavaScript 공부

목록 보기
15/24

JavaScript 코딩테스트 정수 제곱근 판별 (19일)

정수 제곱근 판별

n이라는 숫자에 대해서
제곱근인지 확인해보는 수식이랑
확인 후 제곱이라면 x+1제곱 리턴이고, 아니면 -1리턴이니까

if랑 for가 필요할 것이라고 인지했다.

다만 제곱과 관련된 인덱스는 잘 몰라서 GPT에게 물어봤다.

Math.pow : 주어진 base와 지수의 값을 계산하여 반환합니다.

if에다가 if else?까지 쓰려했는데 그냥 break로 끝내고 나와도 괜찮을 것 같아서 break를 썼다.

첫번째 답

function solution(n) {
    let answer = -1;
    for (let i = 1; i < n; i++) {
        if (Math.pow (i,2) === n) {
        answer = Math.pow (n+1,2);
        break;
        }
    }
    return answer;
}

for문에서 실행문장이 잘못된 것 같아서 확인 중이다.

 answer = Math.pow (n+1,2);

n+1에다가 제곱을 해서 숫자가 커진 듯 하다.
for문에서 찾은 i+1에 제곱을 해야 맞는 숫자가 나올꺼라 수정했다.

두번째 답

function solution(n) {
    let answer = -1; // answer 기본값을 -1로 할당
    for (let i = 1; i < n; i++) { 
        if (Math.pow (i,2) === n) { 
        answer = Math.pow (i+1,2); 
        break; 
        }
    }
    return answer;
}

채점해보니 18번만 틀려서, 어떤 문제인가 하고 [질문하기] 들어가서 찾아보니 n = 1 이라는 입력값인 것 같았다.

 for (let i = 0; i <= n; i++)

1은 1의 제곱이니까 해당되고, 4를 내보내줘야 하는데
for 조건식에서 i<n로 기입했기에 1<1이 성사되지 않아서 실패가 난 듯 했다.
i<=n로 수정하여 1도 포함될 수 있게 바꾸었다.

세번째 답변

깨달은 점

  • Math.pow : 주어진 base와 지수의 값을 계산하여 반환합니다. (Math.pow(num, 2); // num의 제곱 계산) (num ** 2; // num의 제곱 계산)
  • break : 종료문

for문 기본 틀은 좀 적응한 것 같은데 if if else else 요게 아직 조금 헷갈리는 느낌

profile
비전공자 QA의 자기개발 공부노트

0개의 댓글