2020. 9. 8. 00:38ใ๋ฐฑ์ค ๋ฌธ์ ํ์ด/๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
๋ฐฑ์ค - ์คํ ๋ฐฐ๋ฌ(Python)
์ด ๋ฌธ์ ๋ฅผ ์ ๊ทผํ ๋ ๋งจ์ฒ์์ ๋ ์ค๋ฅธ ์๊ฐ์ dp๋ฅผ ์ด์ฉํด์ ํ์ด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. dp์ ์ธ๋ฑ์ค๋ 0์ด ๋ ์ ์๋ ์ต์ํ์ ์ฐ์ฐ ํ์์ด๋ค.
dp[3] = 1, dp[5] =1๋ก ๋๊ณ (3๊ณผ 5์ผ๋ ๋ฐ๋ก ๊ทธ ๋ ๊ฐ์ ๋บ ์ ์๊ธฐ ๋๋ฌธ์) range(6, ์ ๋ ฅ๊ฐ)์ผ๋ก for๋ฌธ์ ๋๋ ธ๋ค.
for๋ฌธ์ ๋ด์ฉ์ 3์ผ๋ก ๋บ๊ฐ์ด ์ต๋๊ฐ์ด ์๋๋(๊ฐ์ด ์์ ๋) ๊ทธ ์์ +1(์ฐ์ฐ ํ์)๋ฅผ ํด์ฃผ์๋ค.
๊ทธ๋ ๊ฒ i-3๊ณผ i-5๋ฅผ ํตํ d[i]์ ๊ฐ ์ค์ ์ต์๊ฐ์ d[i]๋ก ์ค์ ํ๋ค.
์์ค ์ฝ๋๋ก ๋ณด๋ ๊ฒ ๋ ๊ฐํธํ ๊ฒ์ด๋ค.
n = int(input())
dp = [5001]*5001
dp[3] =1
dp[5] =1
for i in range(6,n+1):
if dp[i-3] != 5001:
dp[i] = dp[i-3]+1
if dp[i-5] != 5001:
dp[i] = min(dp[i], dp[i-5]+1)
if dp[n] == 5000:
print(-1)
else :
print(dp[n])
๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด์๋๋ ์ ๋ถ ํ์๋ฐฉ์๊ณผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ์ดํ๊ณ ์์๋ค.
(ํ์๊ฐ ๋ง์ด ๋ถ์กฑํ ํ์ด๋ค)
ํต์ฉ์ ์ผ๋ก ์ฐ๊ณ ์๋ ํ์ด ๋ํ ์ดํด๋ณด์.
์ด ํ์ด๋ ์์ ์ฝ๋๋ณด๋ค ๋์ฑ๋ ๊น๋ํ๊ณ ์ง๊ด์ ์ด๋ค.
1. 5๋ก ๋๋ ์ ์์ผ๋ฉด ๋๋๋ค.
2. 5๋ก ๋ชป๋๋๋ฉด ์ ๋ ฅ๊ฐ์์ 3์ ๋นผ๊ณ count๋ฅผ ์ฌ๋ฆฐ๋ค.
3. 1,2๋ฒ์ ๋ฐ๋ณตํ๋๋ฐ ๋ง์ฝ 5๋ก ๋ชป๋๋๊ณ ๊ณ์ 3์ ๋นผ๋ฉด์ ์ ๋ ฅ๊ฐ์ด 0๋ณด๋ค ์์์ง๋ค๋ฉด -1๋ฅผ ๋ฆฌํดํด์ค๋ค.
์ด ์์ด๋์ด๋ "5๋ก ๋๋ ์ ์์ผ๋ฉด ๋ฌด์กฐ๊ฑด ๋๋ ๋ผ"๊ฐ ํต์ฌ ์์ด๋์ด์ด๋ค.
์๋ ์์ค ์ฝ๋๋ฅผ ํ์ธํด๋ณด์.
n = int(input())
count =0
while True:
if n%5==0:
count = count + n//5
print(box)
break
else :
n = n-3
count +=1
if n<0:
print(-1)
break
'๋ฐฑ์ค ๋ฌธ์ ํ์ด > ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - 1๋ก ๋ง๋ค๊ธฐ(Python) (3) | 2020.09.07 |
---|