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
최종 제출한 코드이다 ! 😊