Skip to content

Commit 147ad63

Browse files
Add files via upload
1 parent 93214f5 commit 147ad63

File tree

1 file changed

+305
-0
lines changed

1 file changed

+305
-0
lines changed

codingtest_review/chpt8_dp.ipynb

+305
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 9,
6+
"id": "fda0140f",
7+
"metadata": {},
8+
"outputs": [
9+
{
10+
"name": "stdout",
11+
"output_type": "stream",
12+
"text": [
13+
"3000\n",
14+
"7\n"
15+
]
16+
}
17+
],
18+
"source": [
19+
"# actual 2 ) 1로 만들기\n",
20+
"def sol(n):\n",
21+
" ans = 0\n",
22+
" \n",
23+
" mem = [0]*(n+1)\n",
24+
" \n",
25+
" for i in range(2, n+1):\n",
26+
" if i % 5 == 0:\n",
27+
" mem[i] = min(mem[i//5], mem[i-1])+1\n",
28+
" elif i % 3 == 0:\n",
29+
" mem[i] = min(mem[i//3], mem[i-1])+1\n",
30+
" elif i % 2 == 0:\n",
31+
" mem[i] = min(mem[i//2], mem[i-1])+1\n",
32+
" else:\n",
33+
" mem[i] = mem[i-1]+1\n",
34+
" \n",
35+
" ans = mem[n]\n",
36+
" return ans\n",
37+
"\n",
38+
"\n",
39+
"n = int(input())\n",
40+
"\n",
41+
"print(sol(n))"
42+
]
43+
},
44+
{
45+
"cell_type": "code",
46+
"execution_count": 10,
47+
"id": "03d2d5cc",
48+
"metadata": {},
49+
"outputs": [
50+
{
51+
"name": "stdout",
52+
"output_type": "stream",
53+
"text": [
54+
"3000\n",
55+
"7\n"
56+
]
57+
}
58+
],
59+
"source": [
60+
"# actual 2 ) 1로 만들기 in book\n",
61+
"def sol(n):\n",
62+
" ans = 0\n",
63+
" \n",
64+
" mem = [0]*(n+1)\n",
65+
" \n",
66+
" for i in range(2, n+1):\n",
67+
" mem[i] = mem[i-1]+1\n",
68+
" \n",
69+
" if i % 5 == 0:\n",
70+
" mem[i] = min(mem[i//5]+1, mem[i])\n",
71+
" elif i % 3 == 0:\n",
72+
" mem[i] = min(mem[i//3]+1, mem[i])\n",
73+
" elif i % 2 == 0:\n",
74+
" mem[i] = min(mem[i//2]+1, mem[i])\n",
75+
" \n",
76+
" ans = mem[n]\n",
77+
" return ans\n",
78+
"\n",
79+
"\n",
80+
"n = int(input())\n",
81+
"\n",
82+
"print(sol(n))"
83+
]
84+
},
85+
{
86+
"cell_type": "code",
87+
"execution_count": 13,
88+
"id": "52b71023",
89+
"metadata": {},
90+
"outputs": [
91+
{
92+
"name": "stdout",
93+
"output_type": "stream",
94+
"text": [
95+
"1 3 1 5\n",
96+
"[1, 3, 1, 5]\n",
97+
"8\n"
98+
]
99+
}
100+
],
101+
"source": [
102+
"def sol(arr):\n",
103+
" ans = 0\n",
104+
" d = [0]*len(arr)\n",
105+
" \n",
106+
" d[0] = arr[0]\n",
107+
" d[1] = max(arr[0], arr[1])\n",
108+
" \n",
109+
" for i in range(2, len(arr)):\n",
110+
" d[i] = max(d[i-1], d[i-2]+arr[i])\n",
111+
" \n",
112+
" print(arr)\n",
113+
" \n",
114+
" ans = d[len(arr)-1]\n",
115+
" return ans\n",
116+
"\n",
117+
"\n",
118+
"arr = list(map(int, input().split()))\n",
119+
"print(sol(arr))"
120+
]
121+
},
122+
{
123+
"cell_type": "code",
124+
"execution_count": 25,
125+
"id": "4723c42d",
126+
"metadata": {},
127+
"outputs": [
128+
{
129+
"name": "stdout",
130+
"output_type": "stream",
131+
"text": [
132+
"3\n",
133+
"[0, 1, 3, 5]\n",
134+
"5\n"
135+
]
136+
}
137+
],
138+
"source": [
139+
"# actual 4 ) 바닥 공사\n",
140+
"\n",
141+
"def sol(n):\n",
142+
" ans = 0\n",
143+
" d = [0]*1001\n",
144+
" \n",
145+
" d[1] = 1\n",
146+
" d[2] = 3\n",
147+
" for i in range(3, n+1):\n",
148+
" d[i] = d[i-1] + d[i-2]*2\n",
149+
" \n",
150+
" print(d[:4])\n",
151+
" ans = d[n]\n",
152+
" \n",
153+
" return ans\n",
154+
"\n",
155+
"\n",
156+
"n = int(input())\n",
157+
"print(sol(n))"
158+
]
159+
},
160+
{
161+
"cell_type": "code",
162+
"execution_count": 32,
163+
"id": "51cb122c",
164+
"metadata": {},
165+
"outputs": [
166+
{
167+
"name": "stdout",
168+
"output_type": "stream",
169+
"text": [
170+
"2 15\n",
171+
"2\n",
172+
"3\n",
173+
"[99999, 99999, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]\n",
174+
"5\n"
175+
]
176+
}
177+
],
178+
"source": [
179+
"# actual 5 ) 효율적인 화폐 구성\n",
180+
"\n",
181+
"def sol(arr, m):\n",
182+
" INF = 99999\n",
183+
" d = [INF]*(m+1)\n",
184+
" \n",
185+
" arr.sort()\n",
186+
" \n",
187+
" for i in arr:\n",
188+
" d[i] = 1\n",
189+
" \n",
190+
" for i in range(min(arr), m+1):\n",
191+
" res = INF\n",
192+
" for j in arr:\n",
193+
" if d[i-j] > 0:\n",
194+
" res = min(res, d[i-j]+1)\n",
195+
" if res != INF:\n",
196+
" d[i] = res\n",
197+
" print(d)\n",
198+
" if d[m] == INF:\n",
199+
" return -1\n",
200+
" else:\n",
201+
" return d[m]\n",
202+
" \n",
203+
"\n",
204+
"n, m = map(int, input().split())\n",
205+
"arr = []\n",
206+
"for i in range(n):\n",
207+
" arr.append(int(input()))\n",
208+
" \n",
209+
"print(sol(arr, m))"
210+
]
211+
},
212+
{
213+
"cell_type": "code",
214+
"execution_count": null,
215+
"id": "7406c998",
216+
"metadata": {},
217+
"outputs": [],
218+
"source": [
219+
"# # actual 5 ) 효율적인 화폐 구성\n",
220+
"\n",
221+
"# def sol(arr, m):\n",
222+
"# INF = 99999\n",
223+
"# d = [INF]*(m+1)\n",
224+
" \n",
225+
"# arr.sort()\n",
226+
" \n",
227+
"# for i in arr:\n",
228+
"# d[i] = 1\n",
229+
" \n",
230+
"# for i in range(arr[0], m+1):\n",
231+
" \n",
232+
"# print(d)\n",
233+
"# if d[m] == INF:\n",
234+
"# return -1\n",
235+
"# else:\n",
236+
"# return d[m]\n",
237+
" \n",
238+
"\n",
239+
"# n, m = map(int, input().split())\n",
240+
"# arr = []\n",
241+
"# for i in range(n):\n",
242+
"# arr.append(int(input()))\n",
243+
" \n",
244+
"# print(sol(arr, m))"
245+
]
246+
},
247+
{
248+
"cell_type": "code",
249+
"execution_count": null,
250+
"id": "028b9aba",
251+
"metadata": {},
252+
"outputs": [],
253+
"source": [
254+
"\n",
255+
"\n",
256+
"\n",
257+
"\n",
258+
"\n",
259+
"\n",
260+
"\n",
261+
"\n",
262+
"\n",
263+
"\n",
264+
"\n",
265+
"\n",
266+
"\n",
267+
"\n",
268+
"\n",
269+
"\n",
270+
"\n",
271+
"\n",
272+
"\n",
273+
"\n",
274+
"\n",
275+
"\n",
276+
"\n",
277+
"\n",
278+
"\n",
279+
"\n",
280+
"\n"
281+
]
282+
}
283+
],
284+
"metadata": {
285+
"kernelspec": {
286+
"display_name": "Python 3 (ipykernel)",
287+
"language": "python",
288+
"name": "python3"
289+
},
290+
"language_info": {
291+
"codemirror_mode": {
292+
"name": "ipython",
293+
"version": 3
294+
},
295+
"file_extension": ".py",
296+
"mimetype": "text/x-python",
297+
"name": "python",
298+
"nbconvert_exporter": "python",
299+
"pygments_lexer": "ipython3",
300+
"version": "3.10.0"
301+
}
302+
},
303+
"nbformat": 4,
304+
"nbformat_minor": 5
305+
}

0 commit comments

Comments
 (0)