Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions 이코테/08 다이나믹 프로그래밍/1로_만들기/유진.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
x = int(input())
d = [0] * 30001

# 보텀업 방식
for i in range(2, x + 1):
# 1을 빼주는 경우
# i - 1보다 하나의 연산(-1)을 더해줘야 하므로 +1
d[i] = d[i - 1] + 1

# 2로 나눌경우
if i % 2 == 0:
d[i] = min(d[i], d[i//2] + 1)
# 3으로 나눌경우
elif i % 3 == 0:
d[i] = min(d[i], d[i//3] + 1)
# 5로 나눌경우
elif i % 5 == 0:
d[i] = min(d[i], d[i//5] + 1)

print(d[x])
20 changes: 20 additions & 0 deletions 이코테/08 다이나믹 프로그래밍/개미_전사/유진.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
n = 4#int(input())
k = [1, 3, 1, 5]#list(map(int, input().split()))
d = [0] * 100 # i번째 창고를 털 때, 가장 많이 털수있는 양을 저장

# 최솟값 지정
d[0] = k[0]
# 어느 방부터 털기 시작하는게 많이털 수 있을까
d[1] = max(k[0], k[1])

# 이후에는 점화식으로 for문
# di = max(di-1, di-2 + ki)
# 바로 전 방을 터는게 많을까, 그전전방과 현재 방을 같이 터는게 많을까
for i in range(2, n):
d[i] = max(d[i - 1], d[i - 2] + k[i])

print(d[n - 1])

# 몰라서 봤음
# d[i] = max(k[i - 1], k[i - 1] + k[i])
# 접근만 좋았음(식은 결국 틀림)