2부터 N까지의 숫자들의 연산 최소값을 구하는 방식을 사용했다.문제풀이 lst = [0,0] N = int(input()) for rpt in range(2, N + 1): lst.append(lst[rpt-1]+1) if rpt % 2 == 0: lst[rpt] = min(lst[rpt], lst[rpt//2]+1) if rpt % 3 == 0: lst[rpt] = min(lst[rpt], lst[rpt//3]+1) print(lst[N])
예전에 비슷한 문제를 풀었을 때는 일일히 계산했다.이번에는 편한 방법이 없을까 찾아보았더니 입력받은 날짜를 요일로 반환해주는 모듈이 있길래 사용해보았다.문제풀이 import datetime def getDayName(a,b): day = ['MON','TUE','WED','THU','FRI','SAT','SUN'] return day[datetime.date(2016, a, b).weekday()] #아래 코드는 테스트를 위한 출력 코드입니다. print(getDayName(5,24))
이것보다 더 나은 코드가 있을지 생각해보았는데 아직 공부가 부족해 더 이상 생각나지 않는다. 문제풀이 def collatz(num): cnt = 0 answer = num while cnt < 500: if answer % 2 == 1: answer = answer * 3 + 1 cnt += 1 if answer == 1: return cnt else: answer //= 2 cnt += 1 if answer == 1: return cnt return -1 # 아래는 테스트로 출력해 보기 위한 코드입니다. print(collatz(6))