DOing
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋(ํ์๋ฒ) with Python ๋ณธ๋ฌธ
๐ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
"์ง๊ธ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ"
ํ๊ตญ์ด๋ก ๋ฒ์ญํ๋ฉด ํ์๋ฒ์ด๋ผ๊ณ ํ ์ ์๋๋ฐ, ์ด๋ฆ ๊ทธ๋๋ก ์ด๋ ํ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋จ์ ๋ฌด์ํ๊ฒ ํ์์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋จ์ํ์ง๋ง ๊ฐ๋ ฅํ ๋ฌธ์ ํด๊ฒฐ๋ฐฉ๋ฒ์ด๋ค.
๐ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ์ ์ฃผ์์
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํด๊ฐ '์ต์ ํด'๋ฅผ ํญ์ ๋ณด์ฅํ๋ ๊ฒ์ ์๋๋ค. ๋๋ฌธ์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ๋ ์ฃผ์ํด์ผํ ๊ฒ์ "ํด๋น ๋ฐฉ๋ฒ์ด ์ ๋น์ฑ์ ๊ฐ์ง๊ณ ์๋๊ฐ?"์ด๋ค.
๐ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ํ์ ์์
Q1. ๊ฑฐ์ค๋ฆ๋ ๊ตฌํ๊ธฐ
๋น์ ์ ์์์ ์ ๊ณ์ฐ์ ๋์์ฃผ๋ ์ ์์ด๋ค. ์นด์ดํฐ์๋ ๊ฑฐ์ค๋ฆ๋์ผ๋ก ์ฌ์ฉํ 500์, 100์, 50์, 10์ ์ง๋ฆฌ ๋์ ์ด ๋ฌดํํ ์กด์ฌํ๋ค. ์๋์๊ฒ ๊ฑฐ์ฌ๋ฌ ์ค์ผํ ๋์ด N์์ผ๋ ๊ฑฐ์ฌ๋ฌ ์ค์ผํ ๋์ ์ ์ต์๊ฐ์๋ฅผ ๊ตฌํ๋ผ.
[๋ฌธ์ ์ ์์ด๋์ด]
: "๊ฐ์ฅ ํฐ ํํ ๋จ์๋ถํฐ ๋์ ๊ฑฐ์ฌ๋ฌ์ฃผ์."
๊ฐ์ฅ ํฐ ํํ ๋จ์๋ฅผ ์ต๋ํ ํ์ฉํด์ ๊ฑฐ์ฌ๋ฌ์คฌ์๋ ๋์ ์ ์ต์ ๊ฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ํด๋น ๋ฌธ์ ์์ ๊ทธ๋ฆฌ๋ ํด๋ฒ์ ์ ๋น์ฑ์ ๊ฐ์ง๊ณ ์๋ค๋ผ๊ณ ํ ์ ์๋ค.
[์ฝ๋]
n = 2470
# ํฐ ๋จ์์ ํํ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ธ
coin_types = [500, 100, 50, 10]
for coin in coin_types:
count += n//coin # ํด๋น ๋จ์์ ํํ๋ก ๊ฑฐ์ฌ๋ฌ์ค ์ ์๋ ๋์ ๊ฐฏ์
n = n%coin # ์์ง ๊ฑฐ์ฌ๋ฌ์ค์ผํ ๋
print(count)
๐ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์์
Q1. 1์ด ๋ ๋๊น์ง
์ด๋ ํ ์ N์ด 1์ด ๋ ๋๊น์ง ๋ค์์ ๋๊ณผ์ ์ค ํ๋๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ ํํ์ฌ ์ํํ๋ ค๊ณ ํ๋ค. ๋จ ๋๋ฒ์งธ ์ฐ์ฐ์ N์ด ๋๋์ด ๋จ์ด์ง ๋๋ง ์ ํํ ์ ์๋ค.
๋ฐฉ๋ฒ 1) N์์ 1์ ๋บ๋ค.
๋ฐฉ๋ฒ 2) N์ K๋ก ๋๋๋ค.
N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ N์ด 1์ด ๋ ๋๊น์ง 1๋ฒ ๋๋ 2๋ฒ ๊ณผ์ ์ ์ํํด์ผํ๋ ์ต์ํ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
* ์ ๋ ฅ์กฐ๊ฑด
- ์ฒซ๋ฒ์งธ ์ค์ N(2<N<100,000)๊ณผ K(2<K<100,000)๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๋ฉฐ ๊ฐ๊ฐ ์์ฐ์๋ก ์ฃผ์ด์ง๋ค. ์ด๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ N์ K๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค.
* ์ถ๋ ฅ์กฐ๊ฑด
- N์ด 1์ด๋ ๋ ๊น์ง 1๋ฒ ํน์ 2๋ฒ ๊ณผ์ ์ ์ํํด์ผํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅ
์ ๋ ฅ ์์ : 25 5
์ถ๋ ฅ ์์ : 2
[๋ฌธ์ ์ ์์ด๋์ด]
: "์ต๋ํ ๋ง์ด ๋๋์."
์ด๋ ํ ์๊ฐ ์์ ๋ (๋ฐฉ๋ฒ 1)์ ์ ํํ๋ ๊ฒ๋ณด๋ค (๋ฐฉ๋ฒ 2)๋ฅผ ์ ํํ๋ ๊ฒ์ด ๋ ๋น ๋ฅด๊ฒ 1์ด๋ผ๋ ์ซ์์ ๋๋ฌ ํ ์ ์๋ค.
[์ฝ๋]
n, k = map(int, input().split())
count = 0
while n!=1:
if n%k ==0:
n=n//k
count+=1
else:
n=n-1
count+=1
print(count)
Q2. ๊ณฑํ๊ธฐ ํน์ ๋ํ๊ธฐ
๊ฐ ์๋ฆฌ๊ฐ ์ซ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ง ๋, ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋์ฉ ๋ชจ๋ ์ซ์๋ฅผ ํ์ธํ๋ฉฐ ์ซ์ ์ฌ์ด์ 'X'๋๋ '+'์ฐ์ฐ์๋ฅผ ๋ฃ์ด ๋ง๋ค ์ ์๋ ๊ฐ์ฅํฐ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ๋จ, ์ผ๋ฐ์ ์ธ ์ฌ์น์ฐ์ฐ ๋ฐฉ์ ์ด์๋, ๋ชจ๋ ์ฐ์ฐ์ ์ธ์ชฝ์์๋ถํฐ ์์๋๋ก ์ด๋ฃจ์ด์ง๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
*์ ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ์ค์ ์ฌ๋ฌ๊ฐ์ ์ซ์๋ก ๊ตฌ์ฑ๋ ํ๋์ ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ง๋๋ค.(1<=S์๊ธธ์ด<=20)
*์ถ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ์ค์ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ ๋ ฅ ์์ : 02984
์ถ๋ ฅ ์์ : 576
[๋ฌธ์ ์์ด๋์ด]
:"0์ด๋ 1์ด ์๋๋ผ๋ฉด ๊ณฑํ๋๊ฒ ์ข๋ค"
[์ฝ๋]
data = list(map(int, input()))
result = 0
for i in data:
# 0์ด๋ 1์ด๋ผ๋ฉด ๋ํ์
if i<=1 or result <=1:
result += i
else: # ์๋๋ผ๋ฉด ๊ณฑํ์
result *= i
print(result)
Q3. ๋ชจํ๊ฐ ๊ธธ๋โญ
ํ ๋ง์์ ๋ชจํ๊ฐ๊ฐ N๋ช ์์ต๋๋ค. ๋ชจํ๊ฐ ๊ธธ๋์์๋ N๋ช ์ ๋ชจํ๊ฐ๋ฅผ ๋์์ผ๋ก ๊ณตํฌ๋๋ฅผ ์ธก์ ํ๋๋ฐ ๊ณตํฌ๋๊ฐ ๋์ ๋ชจํ๊ฐ๋ ์ฝ๊ฒ ๊ณตํฌ๋ฅผ ๋๊ปด ์ํ์ํฉ์์ ์ ๋๋ก ๋์ฒํ ๋ฅ๋ ฅ์ด ๋จ์ด์ง๋๋ค. ๋ชจํ๊ฐ ๊ธธ๋์ฅ์ธ ๋๋น์ด๋ ๋ชจํ๊ฐ ๊ทธ๋ฃน์ ์์ ํ๊ฒ ๊ตฌ์ฑํ๊ณ ์ ๊ณตํฌ๋๊ฐ X์ธ ๋ชจํ๊ฐ๋ ๋ฐ๋์ X๋ช ์ด์์ผ๋ก ๊ตฌ์ฑํ ๋ชจํ๊ฐ ๊ทธ๋ฃน์ ์ฐธ์ฌํด์ผ ์ฌํ์ ๋ ๋๋๋ก ๊ท์ ํ์ต๋๋ค. N๋ช ์ ๋ชจํ๊ฐ์ ๋ํ ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, ์ฌํ์ ๋ ๋ ์ ์๋ ๊ทธ๋ฃน์ ์์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์๋ฅผ ๋ค์ด N=5์ด๊ณ ๊ฐ ๋ชจํ๊ฐ์ ๊ณตํฌ๋๊ฐ "2 3 1 2 2"์ด๋ผ๊ณ ๊ฐ์ ํฉ์๋ค.
์ด๋ ๊ทธ๋ฃน 1์ ๊ณตํฌ๋๊ฐ 1,2,3์ธ ๋ชจํ๊ฐ๋ฅผ ํ ๋ช ์ฉ ๋ฃ๊ณ ๊ทธ๋ฃน2์ ๊ณตํฌ๋๊ฐ 2์ธ ๋จ์ ๋๋ช ์ ๋ฃ๊ฒ๋๋ฉด ์ด 2๊ฐ์ ๊ทธ๋ฃน์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ํ ๋ช๋ช ์ ๋ชจํ๊ฐ๋ ๋ง์์ ๊ทธ๋๋ก ๋จ์์์ด๋ ๋ฉ๋๋ค.
*์ ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๋ชจํ๊ฐ์ ์ N์ด ์ฃผ์ด์ง๋๋ค.(1<=N<=100,000)
- ๋์งธ ์ค์ ๊ฐ ๋ชจํ๊ฐ์ ๊ณตํฌ๋์ ๊ฐ์ N์ดํ์ ์์ฐ์๋ก ์ฃผ์ด์ง๋ฉฐ ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
*์ถ๋ ฅ ์กฐ๊ฑด
-์ฌํ์ ๋ ๋ ์ ์๋ ๊ทธ๋ฃน์ ์ต๋๊ฐ์ ์ถ๋ ฅํฉ๋๋ค
*์ ๋ ฅ ์์
5
2 3 1 2 2
*์ถ๋ ฅ ์์
2
[๋ฌธ์ ์์ด๋์ด]
"๊ณตํฌ๋๊ฐ ๋ฎ์ ์ฌ๋๋ค์ ๋นจ๋ฆฌ ๋ฌถ์ด์ ๋ณด๋ด๊ณ ๋์ ์ฌ๋์ ์ฐจ๋ผ๋ฆฌ ์๋ณด๋ด๋๊ฒ ๋์ ์ ์๋ค."
->๊ณตํฌ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๋ค.
๊ณตํฌ๋๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ชจํ๊ฐ๋ถํฐ ํ๋์ฉ ํ์ธํ๋ฉฐ ๊ทธ๋ฃน์ ํฌํจ๋ ๋ชจํ๊ฐ์ ์๋ฅผ ๊ณ์ฐํ๋ค.
๋ง์ฝ ๊ทธ๋ฃน์ ํฌํจ๋ ๋ชจํ๊ฐ์ ์๊ฐ ํ์ฌ ํ์ธํ๊ณ ์๋ ๊ณตํฌ๋๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด ๊ทธ๋ฃน์ ๊ฒฐ์ฑํ ์ ์๋ค.
[์ฝ๋]
n = int(input())
adventure = list(map(int, input().split()))
adventure.sort() # ๊ณตํฌ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
result = 0 # ์ด ๊ทธ๋ฃน์ ์
count = 0 # ํ์ฌ ๊ทธ๋ฃน์ ํฌํจ๋ ๋ชจํ๊ฐ์ ์
for a in adventure:
count += 1 # ๋ชจํ๊ฐ๋ฅผ ํ์ฌ ๊ทธ๋ฃน์ ํฌํจ์ํจ๋ค
if count >= a: # ๊ณตํฌ๋๋ณด๋ค ๊ทธ๋ฃน์ ๋ชจํ๊ฐ์ ์๊ฐ ํฌ๋ค๋ฉด ๋นจ๋ฆฌ ์ถ๋ฐ์ํค์
result += 1
count = 0 # ๊ทธ๋ฃน ์ด๊ธฐํ
print(result)
์ถ์ฒ ์ฐธ๊ณ :
๋์ผํ ๋ฌธ์ ์ด๋ฉฐ, ์ฝ๋๋ฅผ ์ ์๊ฒ ๋ง์ถฐ ์ฝ๊ฐ์ฉ ๋ณํํ์์ต๋๋ค.
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] DFS with Python (0) | 2021.05.22 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๊ตฌํ with Python (0) | 2021.05.21 |
์ ๊ทํํ์ (0) | 2021.05.19 |
[์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ, ํ (0) | 2021.05.19 |
[์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ with Python (0) | 2021.05.18 |