https://www.acmicpc.net/problem/2839
๋์ ๋ต
# ๋ฐฑ์ค 2839๋ฒ : ์คํ ๋ฐฐ๋ฌ
# 2020-02-01
num = int(input())
count = 0
while num>=3 :
if not(num%5) : # 5์ ๋ฐฐ์์ด๋ฉด
count+= num/5
break
else :
count+=1
num-=3
if num==1 or num==2:
count = -1
else :
count += 0
print(int(count))
๋ถ์
-
๋ค์ด๋๋ฏน ์๊ณ ๋ฆฌ์ฆ
์์ 2๋ฌธ์ ์ ์ํฅ์ผ๋ก ์ฒ์์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์๋ณผ๊น ์๊ฐํ๋ค. ํ์ง๋ง ์ด์ ๋ฌธ์ ์ ๋ฌ๋ฆฌ ์์ ๋ฒ์๊ฐ ํ์ฐํ ์ปค์ง๋ฐ๋ค๊ฐ ์ฐ์ฐ์ ์๊ฐ์ด ๋๋ฌด ์ค๋๊ฑธ๋ฆด ๊ฒ ๊ฐ์์ ์ด๋ฌํ ๋ฐฉ์์ ์๋ ๊ฑฐ๋ผ๊ณ ๊ฒฐ๋ก ๋ด๋ ธ๋ค.
-
๊ฒฝ์ฐ์ ์ (ํน์ง ์ฐพ๊ธฐ)
๊ทธ๋ ๋ค๋ฉด ๋ญ๊ฐ ํน์ง์ด ์๊ณ , ์ด๋ค ์๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ํ ๊ท์น์ด ์์ง ์์๊น ์ถ์ด ์์ ์ ๋์จ ์๋ฅผ ๋น๋กฏํด ์ฌ๋ฌ ๊ฐ์ง ์๋ค์ ์ฐ๋ฉด์ ๋ ผ๋ฆฌ์ ํ๋ฆ์ ๋ณด์๋ค.
์ฐ์ ์ด๋ ํ ์๊ฐ ์ฃผ์ด์ง๋ฉด 5๋ก ๋๋์ด๋ณด๊ณ ๋๋์ด์ง๋ฉด 5kg์ ๋ด์ง๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ต์์ ๋ด์ง๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์์ ํ์คํ๋ค.
๊ทธ๋ ๋ค๋ฉด 5๋ก ๋๋์ด์ง์ง ์๋ ์๋ ์ด๋ป๊ฒ ๋๋ ๊ฒ์ผ๊น? ๊ทธ ์๋ก 21์ ๊ณ์ฐํด๋ณด๋ 3kg * 7๊ฐ๋ ๊ฐ๋ฅํ์ง๋ง 5kg*3๊ฐ, 3kg*2๊ฐ ๊ฐ ๋ ์ ์ ๋ด์ง ์๋ก 21kg๋ฅผ ์ฎ๊ธธ ์ ์์๋ค.
์ด๋ฐ ๋ ๊ฐ์ง ์ํฉ์ผ๋ก ์ ์ถํด๋ณผ ๋
5kg ๋ด์ง๋ง ์ฌ์ฉ > 5kg + 3kg ์์ด์ ์ฌ์ฉ > 3kg ๋ด์ง๋ง ์ฌ์ฉ > ํํ ๋ถ๊ฐ
์ด๋ฌํ ์ฐ์ ์์๋ก ์ ์ฉ๋๋ ๊ฒ์ ์ ์ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ฐฉ๋ฒ์ด ์ ์ฉ๋๋ ์๋
5์ ๋ฐฐ์ > 3์ ๋ฐฐ์๋ฅผ ๋นผ๋ฉด 5์ ๋ฐฐ์๊ฐ ๋๋ ์ > 3์ ๋ฐฐ์๋ง์ ๋ง์กฑํ๋ ์ > ํํ ์๋๋ ์
์ด๋ค.ํนํ 2๋ฒ์งธ์
3์ ๋ฐฐ์๋ฅผ ๋นผ๋ฉด 5์ ๋ฐฐ์๊ฐ ๋๋ ์
๋5์ ๋ฐฐ์๋ฅผ ๋นผ๋ฉด 3์ ๋ฐฐ์๊ฐ ๋๋ ์
๋ก๋ ๋ํ๋ผ ์ ์๊ฒ ์ง๋ง ์ฐ์ฐ์ 5์ ๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ๋ ๋น ๋ฅด๋ค๊ณ ์๊ฐํด์ ์ ์๋ก ์ก์๋ค.
๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ฃผ์ด์ง N์ด ๋ฐ๋ก 5๋ก ๋๋์ด์ง๋ค๋ฉด N์ 5์ ๋ฐฐ์๊ณ ์์์ ์ค๋ช ํ ์ฒซ๋ฒ์งธ ๊ฒฝ์ฐ์ ํด๋นํ๋ค. ๋ฐ๋ผ์ 5kg ๋ด์ง๋ง์ผ๋ก ์ด๋ํ ์ ์๋ค.
๋ฐ๋ก 5๋ก ๋๋์ด์ง์ง ์๋๋ค๊ณ ํด๋ N์์ 3์ ๋นผ๋ฉด์ count๋ฅผ ๋ํด๊ฐ๋ฉด count๋ 3kg ๋ด์ง์ ๊ฐฏ์๋งํผ ๋ํด์ง๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ N์์ 3์ ๋ฐฐ์๋ฅผ ๋บ ์ด๋ค ์๊ฐ 5๋ก ๋๋์ด์ง๋ ์๊ฐ ๋๋ค๋ฉด ์ด ๋๊ป ๋ํด์ง count ์(3kg ๋ด์ง์ ์)์๋ค๊ฐ ํ์ฌ ์๋ฅผ 5๋ก ๋๋ ๋ชซ(5kg ๋ด์ง์ ์)๋ฅผ ๋ํ๋ฉด ๋๋ค. ์ด๋ ๋๋ฒ์งธ ๊ฒฝ์ฐ์ ํด๋นํ๋ฉฐ 5kg, 3kg ๋ด์ง๋ฅผ ์์ด์ ์ด๋ํ ์ ์๋ค.
N์์ 3์ ๋นผ๋ ๊ณผ์ ์ ๊ณ์ ๋ฐ๋ณตํ๋๋ ๋จ์ ์๊ฐ 3๋ณด๋ค ์์์ก๋ค๋ฉด 2๊ฐ์ง ์ผ์ด์ค๊ฐ ๋จ์๋ค. ๋ง์ง๋ง ๋จ์ ์๊ฐ 0์ด๋ผ๋ฉด N์ 3์ผ๋ก๋ง ์ด๋ฃจ์ด์ง 3์ ๋ฐฐ์์ด๋ค. ๋ฐ๋ผ์ ์ด๋๊ป ๋ํด์จ count ์๊ฐ ๊ณง 3kg ๋ด์ง์ ์์ด๋ฉฐ ์ธ๋ฒ์งธ ๊ฒฝ์ฐ์ ํด๋นํ๋ค.
ํ์ง๋ง ๋จ์ ์๊ฐ 1 ๋๋ 2๋ผ๋ฉด ์ด๋ ์์ 3๊ฐ์ง ๊ฒฝ์ฐ ๋ชจ๋ ํด๋นํ์ง ์๊ณ ์ฌ์ง์ด 3์ ๋ฐฐ์๋ ์๋๋ค. ๋ฐ๋ผ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์คํ์ ์ ํํ ์ฎ๊ธธ ์ ์๋ค. ์ด๋ 4๋ฒ์งธ ๊ฒฝ์ฐ์ ํด๋นํ๋ฉฐ count ๊ฐ์ผ๋ก -1์ ํ ๋นํ์ฌ์ผํ๋ค.
์์
์ด๋ค ์ N์ด 21์ด๋ผ๊ณ ๋๊ณ ์์ ๋ก ์ค๋ช ํ๊ฒ ๋ค.
21์ 5๋ก ๋๋์ด์ง์ง ์์ผ๋ฏ๋ก 3์ ๋นผ๊ณ count์ 1์ ๋ํ๋ค. (ํ์ฌ count๋ 1). 18์ 5๋ก ๋๋์ด์ง์ง ์์ผ๋ฏ๋ก ๋ค์ 3์ ๋นผ๊ณ count์ 1์ ๋ํ๋ค. (ํ์ฌ count๋ 2). 15๋ 5๋ก ๋๋์ด์ง๋ฏ๋ก 5๋ก ๋๋ ๋ชซ์ count์ ๋ํ๋ค. 3+2 (๋ชซ+ํ์ฌcount) = 5.
์ฆ, ์คํ 21kg์ 5kg ๋ด์ง 3๊ฐ์ 3kg ๋ด์ง 2๊ฐ๋ก ์ ํํ ๋ฐฐ๋ฌํ ์ ์๋ค.
๋ค๋ฅธ ๋ต
2020-04-19 ์ถ๊ฐ
๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฐ๊ฟ ์ ์๋ค.
def func(N): // N์ ๋ฐ์์
for i๊ฐ 0๋ถํฐ N/5๊น์ง ๋๋ฉด์ // 5๊ฐ ๋์ฌ ์ ์๋ ํ์
N์์ 5*i๋ฅผ ๋นผ๊ณ count์ i ๋ํ๊ธฐ (5 ๋์จ ํ์)
๋จ๋ ์(n)๊ฐ 3์ ๋ฐฐ์๋ฉด
n/3์ count์ ๋ํ๊ธฐ (3 ๋์จ ํ์)
min ๊ณ์ฐ
๊ฐ๋จํ ์ค๋ช ํ์๋ฉด, 5kg ์ง๋ฆฌ๊ฐ ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ์ธ๋ฉด์ 3์ผ๋ก ๋๋์ด๋จ์ด์ง๋ ์ง ํ์ธํ๊ณ ๋๋์ด๋จ์ด์ง๋ ๊ฒฝ์ฐ์ ํํด์ count๋ฅผ ๋น๊ตํ๋ ๋ฐฉ์์ด๋ค.
์๋ฅผ ๋ค์ด ์ค๋ช ํ์๋ฉด 21์ด๋ผ๋ ์๊ฐ ์์ ๋, 5๋ ์ต๋ 4๋ฒ๊น์ง ๋์ฌ ์ ์์ผ๋ฏ๋ก for๋ฌธ์ 0~4๊น์ง ๋๋ค. 5๊ฐ ํ๋ฒ๋ ์๋์ค๋ ๊ฒฝ์ฐ์ธ i๊ฐ 0์ธ ๊ฒฝ์ฐ๋ฅผ ๋ณด๋ฉด ๋จ๋ ์๋ 21์ด๊ณ 3์ ๋ฐฐ์์ด๊ธฐ ๋๋ฌธ์ 21/3 = 7์ count์ ๋ํ๋ฉด ์ด count๋ 7์ด๋ค. ์ฆ, 21์ 5ํค๋ก 0๊ฐ์ 3ํค๋ก 7๊ฐ๋ก ๋ฐฐ๋ฌํ ์ ์๋ค.
์ด๋ ๊ฒ i๋ฅผ ๋๋ค๊ฐ i๊ฐ 3์ธ ๊ฒฝ์ฐ๋ฅผ ๋ณด์. i๊ฐ 3์ธ ๊ฒฝ์ฐ์ 21-5*3 = 6 ์ด๋ฏ๋ก count์ 3์ ๋ํ๊ณ ๋จ๋ ์ 6์ด ๋ํ๋๋ค. 6์ด 3์ ๋ฐฐ์์ด๋ฏ๋ก 6/3 = 2๋ฅผ count์ ๋ํ๋ค. count๋ 5์ด๋ฏ๋ก ์ด์ ์ ๋์๋ 7๋ณด๋ค ์๋ค. ๋ฐ๋ผ์ min ๊ณ์ฐ์์ 5๊ฐ ์ต์๋ก ๋์จ๋ค.
'Algorithm ๋ฌธ์ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python]๋ฐฑ์ค 1074๋ฒ : Z (0) | 2020.02.21 |
---|---|
[python]๋ฐฑ์ค 1019๋ฒ : ์ฑ ํ์ด์ง (0) | 2020.02.21 |
[python]๋ฐฑ์ค 4811๋ฒ : ์์ฝ (1) | 2020.02.21 |
[python]๋ฐฑ์ค 9095๋ฒ : 1,2,3 ๋ํ๊ธฐ (0) | 2020.02.01 |
[python]๋ฐฑ์ค 1463๋ฒ : 1๋ก ๋ง๋ค๊ธฐ (0) | 2020.02.01 |
Comment