๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/12914
ํจ์ง์ด๋ ๋ฉ๋ฆฌ ๋ฐ๊ธฐ๋ฅผ ์ฐ์ตํ๊ณ ์์ต๋๋ค. ํจ์ง์ด๋ ํ๋ฒ์ 1์นธ, ๋๋ 2์นธ์ ๋ธ ์ ์์ต๋๋ค. ์นธ์ด ์ด 4๊ฐ ์์ ๋, ํจ์ง์ด๋
(1์นธ, 1์นธ, 1์นธ, 1์นธ)
(1์นธ, 2์นธ, 1์นธ)
(1์นธ, 1์นธ, 2์นธ)
(2์นธ, 1์นธ, 1์นธ)
(2์นธ, 2์นธ)
์ 5๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋งจ ๋ ์นธ์ ๋๋ฌํ ์ ์์ต๋๋ค. ๋ฉ๋ฆฌ๋ฐ๊ธฐ์ ์ฌ์ฉ๋ ์นธ์ ์ n์ด ์ฃผ์ด์ง ๋, ํจ์ง์ด๊ฐ ๋์ ๋๋ฌํ๋ ๋ฐฉ๋ฒ์ด ๋ช ๊ฐ์ง์ธ์ง ์์๋ด, ์ฌ๊ธฐ์ 1234567๋ฅผ ๋๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํ์ธ์. ์๋ฅผ ๋ค์ด 4๊ฐ ์ ๋ ฅ๋๋ค๋ฉด, 5๋ฅผ returnํ๋ฉด ๋ฉ๋๋ค.
์ ์ถ๋ ฅ ์

์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
์์์ ์ค๋ช
ํ ๋ด์ฉ๊ณผ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
(2์นธ, 1์นธ)
(1์นธ, 2์นธ)
(1์นธ, 1์นธ, 1์นธ)
์ด 3๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฉ๋ฆฌ ๋ธ ์ ์์ต๋๋ค.
ํ์ด
์ ๋ฌธ์ ๋ DP๋ฅผ ์ฌ์ฉํด์ ํด๊ฒฐํ ์ ์๋ค.
๋จผ์ , 1๊ณผ 2๋ฅผ ์ฌ์ฉํ์ฌ ํฉ์ด n์ด ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๊ณ
๊ทธ ๊ฐ์์์ 1234567๋ฅผ ๋๋ ๋๋จธ์ง๋ฅผ ๋ฐํํ๋ฉด ๋๋ค.
1. 1๊ณผ 2๋ฅผ ์ฌ์ฉํ์ฌ ํฉ์ด n์ด ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๊ธฐ
def count_combinations(n):
dp = [0] * (n + 1) # dp[i]๋ ํฉ์ด i๊ฐ ๋๋ ์์ด์ ์
dp[0] = 1 # ํฉ์ด 0์ด ๋๋ ๋ฐฉ๋ฒ์ "์๋ฌด๊ฒ๋ ์ ํํ์ง ์๊ธฐ" 1๊ฐ์ง
for i in range(1, n + 1): # i๋ ํ์ฌ ๋ง๋ค๊ณ ์ถ์ ๋ชฉํ ํฉ
for num in [1, 2]: # num์ ์ฌ์ฉํ ์ ์๋ ์ซ์ (1 ๋๋ 2)
if i - num >= 0: # ์์๊ฐ ๋๋ฉด ์ ๋๋๊น ํ์ธ
dp[i] += dp[i - num] # ์ด์ ๊ฒฝ์ฐ์ num์ ๋ถ์ฌ์ ํ์ฌ ํฉ ๋ง๋ค๊ธฐ
return dp[n] # ์ต์ข
์ ์ผ๋ก ํฉ์ด n์ด ๋๋ ๊ฒฝ์ฐ์ ์
์ด๋ ๊ฒ ํ๋ฉด, 1๊ณผ 2๋ฅผ ์ฌ์ฉํด ํฉ์ด n์ด ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ ์ ์๋ค.
2. 1234567์์ ๋๋ ๋๋จธ์ง
print(count_combinations(n) % 1234567)
์ด๋ ๊ฒ ๊ตฌํ ๊ฐ์์์ 1234567์ ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
์ ๋ต
def solution(n):
return count_combinations(n) % 1234567
def count_combinations(n):
dp = [0] * (n + 1)
dp[0] = 1
for i in range(1, n + 1):
for num in [1, 2]:
if i - num >= 0:
dp[i] += dp[i - num]
return dp[n]
DP ์๊ณ ๋ฆฌ์ฆ์ด ๊ถ๊ธํ๋ค๋ฉด ์๋ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
'๐ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] : [1์ฐจ] ๋น๋ฐ์ง๋ (0) | 2025.07.16 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] : ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ (3) | 2025.07.14 |
| [DP] ํ์ด์ฌ์ผ๋ก Dynamic Programming ์ ๋ณตํ๊ธฐ (0) | 2025.07.13 |
| ํ๋ก๊ทธ๋๋จธ์ค : ๊ทค ๊ณ ๋ฅด๊ธฐ (0) | 2025.06.28 |
| ๋ฐฑ์ค 17219: ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2025.05.13 |