💯Problem Solving

[BOJ] 9095 1,2,3 더하기

date
Jul 1, 2023
slug
boj-9095
author
status
Public
tags
Python
BOJ
summary
백준 9095번 문제풀이입니다.
type
Post
thumbnail
category
💯Problem Solving
updatedAt
Jul 6, 2023 05:59 AM

문제


정수 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의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.

문제풀이


1,2,3 으로 나타낼 수 있는 경우의 수는
dp[n] = dp[n-1] + dp[n-2] + dp[n-3]
why?
각자 구성할 수 있는 1,2,3을 모두 써서 사용했기 떄문에 n-1은 1만 추가 n-2는 2만 추가 n-3은 3만 추가 하면 됌
 
 
파이썬 문제풀이 코드
dp = [] dp.append(0) dp.append(1) dp.append(2) dp.append(4) for i in range(4, 13): dp.append( dp[i-1] + dp[i-2] + dp[i-3] ) T = int(input()) for _ in range(T): n = int(input()) print(dp[n])
 
시간복잡도
  • DP → O(n)

입력


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

출력


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

예제 입력


3 4 7 10

예제 출력


7 44 274
 

알고리즘 분류


  • 구현
  • 문제열