728x90
📌 콜라츠 추측
주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측이다.
- 입력된 수가 짝수라면 2로 나눕니다.
- 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
- 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
💡 나의 풀이
이전에 백준인가 어디서 한번 풀어봤던 문제였다. while
문을 사용하면 쉽게 해결 할 수 있다. 해결 과정은 다음과 같다.
- n이 짝수 일 때, 기존 n에 2로 나눈 몫을 n으로 저장한다.
- n이 홀수 일 때, 기존 n에 3을 곱하고 1을 더한 n으로 저장한다.
- 1번과 2번의 과정을 거쳤다면 cnt를 1 증가시킨다.
- 만약, cnt가 500번 이상일때는 -1을 반환시키고 종료한다.
- n이 1보다 작거나 같아진다면
while
문을 종료시킨다.
728x90
JS
도 마찬가지로 구현해주면 된다. 특이점은 삼항연산자를 이용했다.
# python 코드
def solution(n):
cnt = 0
while n > 1:
if n % 2 == 0:
n //= 2
else:
n = (n * 3) + 1
cnt+=1
if cnt >= 500:
return -1
return cnt
print(solution(626331))
// JS 코드
function solution(num){
let cnt = 0;
while (num > 1){
num % 2 ? (num = num * 3 + 1) : (num /= 2);
cnt += 1;
if (cnt > 500){
return -1;
}
}
return cnt
}
반응형
'Algorithm > 프로그래머스(Programmers)' 카테고리의 다른 글
[ 파이썬(python) ] 프로그래머스 level1 - 자연수 뒤집어 배열 만들기 (0) | 2021.04.01 |
---|---|
[ 자바스크립트(JS), 파이썬(python) ] 프로그래머스 level1 - 행렬의 덧셈 (0) | 2021.04.01 |
[ 파이썬(python) ] 프로그래머스 level1 - 자릿수 더하기 (0) | 2021.03.31 |
[ 파이썬(python) ] 프로그래머스 level1 - 정수 내림차순으로 배치하기 (0) | 2021.03.31 |
[ 파이썬(python) ] 프로그래머스 level1 - 수박수박수 (0) | 2021.03.31 |
댓글