
프로그래머스 1단계 : 콜라츠 추측!
오늘은 다이어트 콜라마냥 칼로리 쫙 뺀 콜라츠 문제를 풀어보도록 합니다
다이어트 콜라 마신다고 살은 안빠집니다.
while/if를 통한 방법
while의 조건에 충족할때까지 while조건 만족을 위한 값들을 계산하고 if를 통해 반환해주는 방법입니다.
1. count 변수는 0으로 설정합니다
2. while을 통해 num이 1 과 같지 않을때까지
3. count를 1씩 증가시키고 num 나누기 2가 1일때 num 곱하기 3 더하기 1을 해준 값을 num에 넣어주고
4. num 나누기 2가 0일때 num 나누기 2를 num에 넣어준뒤
5. 만약 카운트가 500을 초과하게 될시 -1 반환하고 아닐시 계속 반복
6. 최종적으로 count를 반환합니다.
여기서 sqrt는 제곱근을 구하기 위한 메서드 입니다.
function collatz(num) {
let count = 0;
while(num !== 1){
count++;
num = num % 2 ? num * 3 + 1 : num / 2;
if(count > 500) return -1;
}
return count;
}
for/if를 통한 방법 : 다른 사람 풀이
for/if를 사용해 break로 답에 도달시 그 값을 반환해주는 방법입니다.
1. answer은 -1로 설정
2. i가 500 미만이 될때까지 1씩 더해줍니다.
3-1. 만약 num이 1과 같다면 i의 값을 answer에 삽입 후 break를 통해 탈출
3-2. 만약 num 나누기 2가 1이라면 num 곱하기 3 더하기 1한 값을 num에 삽입
4. 아닐시 num 을 2로 나눈뒤 num에 다시 삽입합니다
5. 최종적으로 answer반환
function collatz(num) {
var answer = -1;
for(var i=0;i<500;i++)
{
if(num == 1) {
answer = i;
break;
}
if(num%2) {
num = num *3 + 1;
}
else num /= 2;
}
return answer;
}
'프로그래머스' 카테고리의 다른 글
프로그래머스 1단계 : 자연수 뒤집어 배열로 만들기 (1) | 2022.11.14 |
---|---|
프로그래머스 1단계 : 문자열 다루기 기본! (2) | 2022.11.11 |
프로그래머스 1단계 : 가운데 글자 가져오기! (6) | 2022.11.09 |
프로그래머스 1단계 : 하샤드 수! (5) | 2022.11.08 |
프로그래머스 1단계 : 서울에서 김서방 찾기! (6) | 2022.11.06 |
댓글