[백준-9095] 1,2,3 더하기

개발자 핑구·2022년 3월 11일
0

문제

정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.

  • 1+1+1+1
  • 1+1+2
  • 1+2+1
  • 2+1+1
  • 2+2
  • 1+3
  • 3+1
  • 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.

    입력

    첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.

    출력

    각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.


    import sys
    input = sys.stdin.readline
    
    T=int(input())
    dp=[0]*11
    dp[1]=1
    dp[2]=2
    dp[3]=4
    start=4
    for _ in range(T):
        n=int(input())
        if dp[n]!=0:
            print(dp[n])
            continue
        for i in range(start,n+1):
            dp[i]=dp[i-3]+dp[i-2]+dp[i-1]
        start=n+1
        print(dp[n])

    수행시간: 72ms


    내 생각

    정수i를 만드는 경우의 수는 i-3을 만드는 경우들에 3을 추가하는 것과 i-2를 만드는 경우들에 2를 추가하는 것과 i-1을 만드는 경우들에 1를 추가하는 것이다.
    따라서 dp[i]=dp[i-3]+dp[i-2]+dp[i-1] 이다

    0개의 댓글

    관련 채용 정보