알고리즘(Python, JavaScript) - 콜라츠 추측
Input
1 | input_one = 6 |
Expected Output
1 | output_one = 8 |
목표
- 입력된 수가 짝수라면 2로 나눕니다.
- 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
- 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
- 최고 500번을 수행하며 그 안에 성공하면 수행 횟수를, 불가능하면 -1을 리턴한다.
조건
- 1 <= 입력 <= 8,000,000
- 최고 500번 수행
코드
Python3
1 | def solution(num): |
JavaScript
1 | function solution(num) { |
해설
- 처음 코드로 진입하면 아직 입력값을 바꾸는 작업을 하지 않았기 때문에 수행 횟수는 0이다.
- 처음부터 입력이 1이라면 while 루프로 진입이 불가능하고 바로 마지막 코드로 가게된다.
- 입력 값이 1이면 0인 answer을 리턴한다.
- while 루프로 진입하면 입력 값을 바꾸는 작업을 수행하고 입력 값이 1이 되지 않는다면 500회만 수행하고 그 전에 1이 되면 while 루프로 진입하지 않고 수행한 횟수를 answer에 기록하고 그것을 리턴한다.