알고리즘 문제풀이
https://school.programmers.co.kr/learn/courses/30/lessons/12943
문제에서 친절하게 어떻게 푸는지에 대해 가이드라인(?)을 제공했다.
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문을 한줄로 끝!!
알고리즘 꾸준히
가보자고!!