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))
먼저 lower()을 이용해 모두 소문자로 바꾸고 split()을 이용해 단어별로 자르고,문자열 변수에 capitalize() 함수를 이용해 저장한다.문제풀이 def Jaden_Case(s): string = "" lst = s.lower().split() for rpt in range(0,len(lst)): string = string + lst[rpt].capitalize() + " " return string[0:len(string)-1] # 아래는 테스트로 출력해 보기 위한 코드입니다. print(Jaden_Case("3people unFollowed me for the last week"))