[파이썬 / Algorithm] 프로그래머스 연습문제 level1 - 콜라츠 추측

waterlyn·2021년 12월 3일
0
post-thumbnail
post-custom-banner

문제

https://programmers.co.kr/learn/courses/30/lessons/12943

풀이

문제에서 주어진 작업을 그대로 코드에 반영하면 되는 문제이다.

주어진 단계의 지속적인 반복이므로 while문을 사용하면 될 것이라고 생각했다 !

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

근데 테스트 1개에서 실패가 떴다...

곰곰히 코드를 보면서 반례를 생각해보니 만약 처음 주어진 num이 1이라면 바로 카운트 수가 0이라고 반환되어야 하는, 내가 작성한 코드대로 따져보면 짝수가 아니므로 조건문에 의해 1에 3이 곱해지고 1이 더해지면서 카운트 수가 바로 반환되지 않는 경우가 발생한다.

그래서 num이 우선 1인지 아닌지 먼저 판단해 준 후 주어진 작업을 수행하도록 수정했다.

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

최종 제출한 코드이다 ! 😊

profile
Hello there 🖤
post-custom-banner

0개의 댓글