Programmers

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

winter17 2023. 4. 7. 17:36

https://school.programmers.co.kr/learn/courses/30/lessons/120909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

function solution(n) {
    let answer = 0;
    for (let i = 1; i <= n; i++){
        if(i * i === n){
            answer = 1
            break // 제곱근을 찾으면 반복 종료
        }
    }
    if (answer === 0){ // 반복문을 모두 돌았지만 제곱근을 찾지 못한 경우
        answer = 2
    }
    return answer
}

리뷰

처음에 answer = 2를 반환하는 조건문을 for문 내부에다 작성을 하고

if 문에서 제곱근을 찾은 경우 answer를 반환하고 break로 종료를 했는데

if문에 대한 break이기 때문에 여전히 for문은 돌아간다. 따라서 제곱근을 찾았다 하더라도 틀린 결과를 반환한다

그렇기 때문에 answer = 2를 반환하는 조건문을 for문 외부에 둬야 한다

백준이나 swea는 이런 문제 스타일이 없었는데 프로그래머스에서는 이런 스타일의 문제가 종종 보이는 듯하다