-
(어렵)항해3주차 자바스크립트 프로그래머스 - 콜라츠 추측카테고리 없음 2023. 2. 1. 18:20
나의 풀이 (참고) // 각각 메소드와 코드 순서를 짜는게 아직은 미숙함
function solution(num) { let answer = 0; while (num != 1) { if (num % 2 == 0){ num /= 2; } else { num = (num * 3) + 1; } answer += 1; } if (answer >= 500) { return -1; } else { return answer; } }
- 주어진 answer 변수를 카운트를 세는 변수로 사용하였다
- while 문을 이용해 주어진 수가 1이 아니라면 계속 while 문이 반복되게 조건을 설정
- 주어진 수가 짝수라면 나누기 2를
- 주어진 수가 홀수라면 3을 곱하고 1을 더해주는 if문ㅇ르 while문 안에 작성하였다
- while문 안에 들어간 수가 짝수/홀수를 판별해 식을 한 번 돌고 나올 때마다 answer += 1 로 while 문을 반복하는 횟수를 카운팅 해주었다
- while문을 반복한 횟수가 500번을 넘는다면 -1을, 아니라면 answer을 return 하게 하였다.
다른 풀이
function solution(num) { var count = 0; while (count < 500) { if (num === 1) { return count; } count ++; num = num % 2 === 0 ? num /2 : num *3 +1; } return -1; }
function solution(num) { let counter = 0; while (num !== 1){ if(counter++ === 500) return -1; num = num%2 ? num*3+1 : num/2; } return counter; }