한 걸음씩
[프로그래머스][JS] 정수 제곱근 판별 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12934
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(n) {
let num = 0
while (n !== num * num){ // n과 num의 제곱근이 다르면 반복 시작
for (let i = 1; i <= n; i++){
if (i * i === n){
num = i
break
}
}
if (num === 0){
return -1
}
}
return (num+1) ** 2;
}
for문 안의 if문에서 i의 제곱근과 n의 값이 일치하면 break를 걸어줘야 한다
그렇지 않으면, 시간초과 발생한다
for문 외의 if문의 경우 제곱근을 발견하지 못했을 경우를 처리해 주는 코드인데
n이 0이라면 -1을 리턴한다
리뷰
풀이 과정의 설명 부분에서 제곱근을 발견하지 못했을 경우 코드를 어디에 배치해야 할지 고민을 했고
break를 걸지 않고 제출했더니 시간 초과가 발생해서 break를 걸어줬다
break를 걸지 않았다는 것은 for문에서 설정한 범위를 다 돌아야 끝나기 코드는 작동할지 모르나, 시간이 굉장히 오래 걸린다
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 최대공약수와 최소공배수 (0) | 2023.04.12 |
---|---|
[프로그래머스][JS] 제일 작은 수 제거하기 (1) | 2023.04.07 |
[프로그래머스][JS] 최댓값 만들기 (2) (0) | 2023.04.07 |
[프로그래머스][JS] 주사위의 개수 (0) | 2023.04.07 |
[프로그래머스][JS] 제곱수 판별하기 (0) | 2023.04.07 |