Python) 콜라츠 추측
난이도 : Level 1
유형 : 연습문제
카테고리 : 프로그래머스
날짜 : 2022-02-21
문제 풀이
주어진 수가 1이 될 때까지 작업을 반복하면, 모든 수를 1로 만들 수 있는 콜라츠 추측을 구하는 문제이다.
예를 들어 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 된다.
위 작업에서 몇 번이나 반복해야하는지 반환하는 함수
를 구하되, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 리턴한다.
먼저 이 문제에 필요한 변수들을 생각해본다.
1
2num # 처음 입력 받는 수
ctn # 몇 번이나 반복하는지 세는 변수입력받는 수 num이 1이 되면 멈출 수 있도록 while문으로 반복한다.
그런다음 짝수일 때 num을 2로 나눠준다.1
2
3while num != 1:
if num % 2 == 0 :
num //= 2홀수일 때 num에 3을 곱하고 1을 더해준다.
1
2else :
num = (num * 3) + 1반복한 횟수 ctn이 500번을 반복해도 1이 되지 않는다면 –1을 리턴한다.
1
2
3if answer == 500 :
answer = -1
break
전체 코드
1 | def solution(num): |
Python) 콜라츠 추측