반응형
https://programmers.co.kr/learn/courses/30/lessons/12943?language=javascript
문제
위 조건식을 반복하고, 몇번 반복했는지 출력을 하는데
500번 까지 시도를 하여도, 1이 되지 않을경우 -1을 리턴하는 문제 입니다.
해당 조건에 따른 반복을 하는 것이기에 while 또는 재귀함수를 생각했습니다.
코드
function solution(num) {
let count = 0;
while(num!=1 && count!=500){
if(num%2==0) num = num/2
else{
num = num*3+1;
}
count++;
}
return num == 1 ? count : -1;
}
while의 조건식을 설정해주고(num이 1이 되거나, count 500이 되면 while문 종료)
while문의 결과에 따른 값에 따라 다시 return 값을 정하는 코드 입니다.
function solution(num, count=0){
return num == 1 ? (count >= 500 ? -1 : count) : solution(num % 2 == 0 ? num / 2 : num * 3 + 1, ++count);
}
위 코드는 재귀함수를 이용하였습니다.
삼항연산자를 사용하였고, count라는 값도 계속 필요하기에 함수 인자에 포함시켰습니다.
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
하샤드 수 (연습문제 Lv1 / JS) (0) | 2021.12.02 |
---|---|
x만큼 간격이 있는 n개의 숫자 (연습문제 Lv1 / JS) (0) | 2021.12.01 |
핸드폰 번호 가리기 (연습문제 Lv1 / JS) (0) | 2021.12.01 |
행렬의 덧셈 (연습문제 Lv1 /JS) (0) | 2021.12.01 |
직사각형 별찍기 (연습문제 Lv1 / JS) (0) | 2021.12.01 |