문제 :
내 풀이:
function solution(num) {
let cnt = 0;
if (num === 1) {
return 0;
}
while (cnt < 500) {
if (num === 1) {
return cnt;
}
if (num % 2 === 0) {
num = num / 2;
} else {
num = num * 3 + 1;
}
cnt++;
}
return -1;
}
다른 사람의 풀이 :
function collatz(num) {
var answer = 0;
while(num !=1 && answer !=500){
num%2==0 ? num = num/2 : num = num*3 +1;
answer++;
}
return num == 1 ? answer : -1;
}
상당히 깔끔하고 간결하다.
while문을 이렇게 사용이 가능하구나 라는 생각이 들었다.
몰랐던 메서드나 기술을 사용한 풀이도 아닌데, 내 if문을 남발해 놓은 내 코드보다 훨씬 가독성이 좋고 의도가 분명하게 느껴진다.
문제가 길어서 살짝 겁먹었지만 나름 쉽게 풀어서 기분이 좋았는데, 다른 사람의 풀이를 보고 더 노력해야겠다고 느꼈다.
'프로그래머스' 카테고리의 다른 글
[JavaScript] 문자열 다루기 기본 - 프로그래머스 (0) | 2024.08.13 |
---|---|
[JavaScript] 부족한 금액 계산하기 - 프로그래머스 (0) | 2024.08.12 |
[JavaScript] 하샤드 수 - 프로그래머스 (0) | 2024.08.08 |
[JavaScript] 문자열 내 p와 y의 개수 - 프로그래머스 (0) | 2024.08.07 |
[JavaScript] 핸드폰 번호 가리기 - 프로그래머스 (0) | 2024.08.06 |