
๐ฑ ๋ฌธ์
2839๋ฒ: ์คํ ๋ฐฐ๋ฌ
์๊ทผ์ด๋ ์์ฆ ์คํ๊ณต์ฅ์์ ์คํ์ ๋ฐฐ๋ฌํ๊ณ ์๋ค. ์๊ทผ์ด๋ ์ง๊ธ ์ฌํ๊ฐ๊ฒ์ ์คํ์ ์ ํํ๊ฒ Nํฌ๋ก๊ทธ๋จ์ ๋ฐฐ๋ฌํด์ผ ํ๋ค. ์คํ๊ณต์ฅ์์ ๋ง๋๋ ์คํ์ ๋ด์ง์ ๋ด๊ฒจ์ ธ ์๋ค. ๋ด์ง๋ 3ํฌ๋ก๊ทธ
www.acmicpc.net
๐ก ์ค๋ช
ํด๋น ๋ฌธ์ ๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ๋๋ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค.
์ฐ์ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํ์ด๊ฐ ๊ฐ๋ฅํ์ง ํ์ธํ๊ธฐ ์ํด์๋ 2๊ฐ์ง ์กฐ๊ฑด์ด ์์ต๋๋ค.
1. ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ (Optimal substructure)
2. ์ค๋ณต ๋ถ๋ถ ๋ฌธ์ (Overlapping subproblems)
์ฆ, ํฐ ๋ฌธ์ ์ํฉ์ ์๊ฒ ๋๋์ด์ ํด๊ฒฐํ๊ณ ์ ํ ๋, ์ค๋ณต๋๋ ์ํฉ์ด ๋ฐ์ ํ๋ฉฐ, ์๊ฒ ๋๋ ์ง ๋ฌธ์ ๋ฅผ ๋ฐํ์ผ๋ก ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๊ฐ๋ฅผ ์๊ฐํด๋ณด์์ผ ํฉ๋๋ค.
์ฐ์ ์คํ์ด 3kg ๋๋ 5kg์ธ ๊ฒฝ์ฐ, ๊ฐ๊ฐ 1๊ฐ์ ๋ด์ง๋ง ๊ฐ์ ธ๊ฐ๋ ์ฐธ์ด ๋๋ ๊ฐ์ฅ ์์ ๋ฌธ์ ์ํฉ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ทธ ๋ค์์ผ๋ก ํฐ ์ซ์์ธ 6kg์ ๊ฐ์ ธ๊ฐ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
3kg + 3kg ์ผ๋ก 6kg๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ์ ์ ์๋ ์ฌ์ค์ 6kg(ํฐ ๋ฌธ์ )๋ฅผ 2๊ฐ์ 3kg(์ค๋ณต ๋ถ๋ถ ๋ฌธ์ ) ์ผ๋ก ๋๋์ด ์๊ฐํด๋ณผ ์ ์๋ค๋ ์ ์ ๋๋ค.
๋ํ ๊ฐ๊ฐ์ ๋ถ๋ถ ๋ฌธ์ ๋ค์ด 3kg(1ํ)๋ก ์ต์ ์ ํด(์ต์ ๋ถ๋ถ ๊ตฌ์กฐ)๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์๋ ํ์ด๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ์ผ๋ก ํด๊ฒฐํ ์์ค์ฝ๋์ ๋๋ค.
โ๏ธ ์์ค์ฝ๋
#-*- coding:utf-8 -*-
import sys
INF = sys.maxsize
input = sys.stdin.readline
MIS = lambda: map(int, input().rstrip().split())
n = int(input())
# iKG์ ๋ํ ์ต์ ๋ฐฐ๋ฌ ํ์๋ฅผ ๊ธฐ๋ก
# n์ ๋ฒ์๋ 3 ~ 5000 ์ฌ์ด
dp = [INF] * (5001)
# ๋ง๋ค์ด์ง ์ ์๋ ๊ฒฝ์ฐ์ ๋ํด์๋ ๋ฌดํ๊ฐ์ผ๋ก ์ด๊ธฐํ
# ์ต์ ์ํฉ์ ๋ํด ๋ฏธ๋ฆฌ ์ด๊ธฐํ
dp[3], dp[4], dp[5] = (1, INF, 1)
# iKG์ ๋ฐฐ๋ฌํ๋ ํ์ =
# iKG์ ๊ธฐ์กด ๋ฐฐ๋ฌ ํ์์, (i-3)KG ๋๋ (i-5)KG์์ 1ํ๋ฅผ ๋ํ์ฌ ์ต์ ๊ฐ์ผ๋ก ์ฌํ ๋น
for i in range(6, n+1):
dp[i] = min(dp[i], dp[i-3] + 1, dp[i-5] + 1)
# ๋ฐฐ๋ฌํ ์ ์๋ ๊ฒฝ์ฐ๋ INF ๊ฐ์ด ๋ณํ์ง ์์ผ๋ฏ๋ก -1
# ๋ฐฐ๋ฌ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ ์ต์ ๋ฐฐ๋ฌ ํ์๋ฅผ ์ถ๋ ฅ
print(dp[n]) if dp[n] != INF else print(-1)
github : https://github.com/tmdgh1592
tmdgh1592 - Overview
๋๋ฆฌ๋๋ผ๋ ์ฒ์ฒํ..!! ๐. tmdgh1592 has 21 repositories available. Follow their code on GitHub.
github.com
'๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ฐฑ์ค - Python] 2579๋ฒ : ๊ณ๋จ ์ค๋ฅด๊ธฐ (1) | 2022.09.28 |
|---|---|
| [๋ฐฑ์ค - Python] 1697๋ฒ : ์จ๋ฐ๊ผญ์ง (0) | 2022.09.27 |
| [๋ฐฑ์ค - Python] 2671๋ฒ : ์ ์ํจ์๋ณ (0) | 2022.09.14 |
| [๋ฐฑ์ค/ํ์ด์ฌ] 1004๋ฒ ๋ฌธ์ '์ด๋ฆฐ ์์' (14) | 2021.06.11 |
| [๋ฐฑ์ค/ํ์ด์ฌ] 1003๋ฒ ๋ฌธ์ 'ํผ๋ณด๋์น ํจ์' (16) | 2021.06.10 |