728x90
반응형
※ 문제링크
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
※ 관련개념
메모이제이션 - 위키백과, 우리 모두의 백과사전
메모이제이션(memoization)은 컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하
ko.wikipedia.org
해당 문제는 메모이제이션을 활용하여 각각의 계산결과를 저장하고 그 이후 계산을 이전 리스트를 참조해서 풀어야 하는 문제였다. 문제해결 코드를 작성하는 것은 크게 어렵지 않았으며, 자세한 문제풀이방법과 코드는 아래와 같다.
1. 처음 받은 입력값을 2차원 리스트 형태로 저장한다.
2. 3가지 연산을 모두 진행하고 그 리스트를 dp리스트에 추가한다.
3. 추가할 리스트에 1이 있는 경우 반복문을 중지하고 실행한 반복횟수를 출력한다.
N = int(input())
dp = [[N]]
cnt = 0
while 1 not in dp[cnt]:
dp_next = []
for dp_past in dp[cnt]:
dp_next.append(dp_past - 1)
if dp_past % 3 == 0:
dp_next.append(dp_past // 3)
if dp_past % 2 == 0:
dp_next.append(dp_past // 2)
dp.append(dp_next)
cnt += 1
print(cnt)
P.S 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.
728x90
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 11053번 가장 긴 증가하는 부분 수열 / 사용언어 : 파이썬 (0) | 2021.12.23 |
---|---|
[BOJ] 10844번 쉬운 계단수 / 사용언어 : 파이썬(python) (0) | 2021.12.23 |
[BOJ] 1149번 RGB거리 / 사용언어 : 파이썬(python) (0) | 2021.12.23 |
[BOJ] 1932번 정수 삼각형 / 사용언어 : 파이썬(python) (0) | 2021.12.22 |
[BOJ] 9461번 파도반 수열 / 사용언어 : 파이썬(python) (0) | 2021.12.22 |
댓글