알고리즘 문제풀이
https://school.programmers.co.kr/learn/courses/30/lessons/12943

콜라츠추측

풀이방식

  1. 입력된 수가 짝수라면 2로 나눈다.
  2. 입력된 수가 홀수라면 3을 곱하고 1을 더한다.
  3. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복한다.

문제풀이

문제에서 친절하게 어떻게 푸는지에 대해 가이드라인(?)을 제공했다.

def solution(num):
    answer = 0
         if num % 2 == 0:
             num = num/2
             
         else:
             num = num*3 + 1

먼저 짝수와 홀수를 구별하여 1,2 풀이를 적용한다.

def solution(num):
    answer = 0
    while num != 1:
         if num % 2 == 0:
             num = num/2
         else:
             num = num*3 + 1

while문을 추가하여 1이 될 때까지 if문을 반복한다.

...
         else:
             num = num*3 + 1
        if answer > 500:
            return -1
 
        answer += 1

if문을 추가하여 answer가 500 초과하게 되면 -1을 리턴하게 했다.

최종코드

def solution(num):
    answer = 0
    while num != 1:
         if num % 2 == 0:
             num = num/2
         else:
             num = num*3 + 1
        if answer > 500:
            return -1
 
        answer += 1
    return answer

풀이후기

문제 자체가 그리 어렵지 않았고, 친절한 문제였다.
리팩토링도 진행해봤다.

num = num/2 if num % 2 == 0 else num*3 + 1  

3항연산자를 이용해서 리팩토링!
긴 if문을 한줄로 끝!!

알고리즘 꾸준히
가보자고!!

profile
가보자고

0개의 댓글

관련 채용 정보