Python) 콜라츠 추측

난이도 : Level 1
유형 : 연습문제
카테고리 : 프로그래머스
날짜 : 2022-02-21

문제 풀이

주어진 수가 1이 될 때까지 작업을 반복하면, 모든 수를 1로 만들 수 있는 콜라츠 추측을 구하는 문제이다.
예를 들어 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 된다.
위 작업에서 몇 번이나 반복해야하는지 반환하는 함수를 구하되, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 리턴한다.

  1. 먼저 이 문제에 필요한 변수들을 생각해본다.

    1
    2
    num # 처음 입력 받는 수 
    ctn # 몇 번이나 반복하는지 세는 변수
  2. 입력받는 수 num이 1이 되면 멈출 수 있도록 while문으로 반복한다.
    그런다음 짝수일 때 num을 2로 나눠준다.

    1
    2
    3
    while num != 1:
    if num % 2 == 0 :
    num //= 2
  3. 홀수일 때 num에 3을 곱하고 1을 더해준다.

    1
    2
    else :
    num = (num * 3) + 1
  4. 반복한 횟수 ctn이 500번을 반복해도 1이 되지 않는다면 –1을 리턴한다.

    1
    2
    3
    if answer == 500 :
    answer = -1
    break

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
def solution(num):
ctn = 0
while num != 1:
if num % 2 == 0 :
num //= 2
else :
num = (num * 3) + 1
ctn += 1
if ctn == 500 :
ctn = -1
break
return ctn
Author

Sujeong Kim

Posted on

2022-02-21

Updated on

2022-02-21

Licensed under

댓글