Guidelines

1, 2, 3 λ”ν•˜κΈ° ν•΄μ„€

주어진 숫자 n을 1, 2, 3의 ν•©μœΌλ‘œ λ§Œλ“œλŠ” λͺ¨λ“  경우의 수λ₯Ό κ΅¬ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

이 ν•¨μˆ˜λŠ” 동적 ν”„λ‘œκ·Έλž˜λ°μ˜ νƒ€λ·Έλ ˆμ΄μ…˜ 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€.

νƒ€λ·Έλ ˆμ΄μ…˜μ€ 계산 κ²°κ³Όλ₯Ό ν…Œμ΄λΈ”μ— μ €μž₯ν•˜κ³ , μ΄ν›„μ˜ κ³„μ‚°μ—μ„œ 이전에 κ³„μ‚°λœ 값을 μž¬μ‚¬μš©ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.


ν•¨μˆ˜ κ΅¬ν˜„

  1. 기본 경우 처리:

    • n < 3인 경우, n을 κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€. n이 1μ΄λ‚˜ 2일 λ•Œ κ°€λŠ₯ν•œ 경우의 μˆ˜λŠ” 각각 1κ³Ό 2μž…λ‹ˆλ‹€.

    • n == 3인 경우, 경우의 μˆ˜λŠ” 4μ΄λ―€λ‘œ 4λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

  2. νƒ€λ·Έλ ˆμ΄μ…˜μ„ μœ„ν•œ λ°°μ—΄ μ΄ˆκΈ°ν™”:

    • dp 배열을 [0, 1, 2, 4]둜 μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ dp[i]λŠ” n=i일 λ•Œμ˜ 경우의 수λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
  3. 동적 ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ 경우의 수 계산:

    • 4λΆ€ν„° nκΉŒμ§€μ˜ 각 μˆ«μžμ— λŒ€ν•΄, dp[i]λŠ” dp[i - 1], dp[i - 2], dp[i - 3]의 ν•©μœΌλ‘œ μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€. μ΄λŠ” n=iλ₯Ό λ§Œλ“œλŠ” 경우의 μˆ˜κ°€ n=i-1, n=i-2, n=i-3λ₯Ό λ§Œλ“œλŠ” 경우의 수의 ν•©κ³Ό κ°™μŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

λͺ¨λ²” λ‹΅μ•ˆ
def solution(n): # κΈ°λ³Έ 경우 처리 if n < 3: return n if n == 3: return 4 # νƒ€λ·Έλ ˆμ΄μ…˜μ„ μœ„ν•œ λ°°μ—΄ μ΄ˆκΈ°ν™” dp = [0, 1, 2, 4] # 동적 ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ 경우의 수 계산 for i in range(4, n + 1): dp.append(dp[i - 1] + dp[i - 2] + dp[i - 3]) return dp[n]

μ‚¬μš© μ˜ˆμ‹œ

μž…μΆœλ ₯ μ˜ˆμ‹œ
print(solution(4)) # 좜λ ₯: 7

solution(4)λ₯Ό ν˜ΈμΆœν•˜λ©΄, 4λ₯Ό

λ§Œλ“œλŠ” 경우의 μˆ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. 1 + 1 + 1 + 1
  2. 1 + 1 + 2
  3. 1 + 2 + 1
  4. 2 + 1 + 1
  5. 2 + 2
  6. 1 + 3
  7. 3 + 1

λ”°λΌμ„œ 총 7가지 방법이 있으며, μ΄λŠ” ν•¨μˆ˜κ°€ μ˜¬λ°”λ₯΄κ²Œ 7을 λ°˜ν™˜ν•¨μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help