ν‹°μŠ€ν† λ¦¬ λ·°

728x90
λ°˜μ‘ν˜•

문제

 

11057번: 였λ₯΄λ§‰ 수

였λ₯΄λ§‰ μˆ˜λŠ” 수의 μžλ¦¬κ°€ μ˜€λ¦„μ°¨μˆœμ„ μ΄λ£¨λŠ” 수λ₯Ό λ§ν•œλ‹€. μ΄λ•Œ, μΈμ ‘ν•œ μˆ˜κ°€ 같아도 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μΉœλ‹€. 예λ₯Ό λ“€μ–΄, 2234와 3678, 11119λŠ” 였λ₯΄λ§‰ μˆ˜μ΄μ§€λ§Œ, 2232, 3676, 91111은 였λ₯΄λ§‰ μˆ˜κ°€ μ•„λ‹ˆλ‹€. 수�

www.acmicpc.net

 

문제 풀이

 μ΄μ „에 ν‘Ό 10844 μ‰¬μš΄ 계단 μˆ˜μ— λŒ€ν•œ 풀이와 μœ μ‚¬ν•œ λ°©μ‹μœΌλ‘œ ν’€ 수 μžˆλŠ” λ¬Έμ œμ΄λ‹€. 차이점은 0으둜 λΆ€ν„° μ‹œμž‘ν•  수 있고 μˆ˜κ°€ μ€‘λ³΅λ˜μ–΄λ„ λœλ‹€λŠ” 것이닀. λ”°λΌμ„œ n에 λ”°λ₯Έ 경우의 μˆ˜λ“€μ€ f(n) = f(n - 1) + f(n) 점화식을 톡해 ꡬ할 수 μžˆλ‹€. μ΄λŠ” 3으둜 λλ‚˜κΈ° μœ„ν•΄μ„œλŠ” μ•žμ˜ μˆ«μžλ“€μ΄ 0, 1, 2κ°€ λ˜μ–΄λ„ 되기 λ•Œλ¬Έμ— μ΄λŠ” μ•žμ— κ΅¬ν•œ 경우의 수λ₯Ό ν•©μ‚°ν•΄μ£Όμ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

μ½”λ“œ

from sys import stdin


if __name__ == "__main__":
    n = int(stdin.readline()) - 1
    nums = [1] * 10

    for _ in range(n):
        for i in range(1, 10):
            nums[i] = nums[i] + nums[i - 1]

    print(sum(nums) % 10007)

 

728x90
λ°˜μ‘ν˜•
λŒ“κΈ€
κΈ€ 보관함
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€