본문 바로가기

프로그래머스, 백준

백준 9095번 1,2,3 더하기

https://www.acmicpc.net/problem/9095

 

규칙을 찾아내기 위해 경우의 수를 세봤다.

정수 합을 나타내는 방법의 수
1 1
2 2
3 4
4 7
5 13

 

4의 합을 나타내는 방법의 수는 1,2,3의 합을 나타내는 방법의 수의 합이고 

5의 합을 나타내는 방법의 수는 2,3,4의 합을 나타내는 방법의 수의 합이다.

 

일반화 하면 n의 합을 나타내는 방법의 수는 n-1,n-2,n-3의 합을 나타내는 방법의 수의 합이다.

이를 이용하여 코드를 짠다.

 

저번 백준 과제를 하면서 알게 된 dp 동적 프로그래밍을 사용하면 된다.

코드에 추가적인 주석을 달아놨다.

T = int(input())

# 0부터 10까지의 숫자를 만들기 위한 경우의 수를 저장할 리스트를 생성
# 초기값으로 1, 2, 3을 만드는 경우의 수를 설정
d = [0] * 11  
d[1] = 1 
d[2] = 2  
d[3] = 4  

# 4부터 10까지의 숫자를 만들기 위한 경우의 수를 계산하여 리스트에 저장
for i in range(4, 11):
    d[i] = d[i - 3] + d[i - 2] + d[i - 1]

for i in range(T):
    n = int(input())  # 입력값으로 숫자를 받음
    print(d[n])  # 숫자를 만드는 경우의 수를 출력

'프로그래머스, 백준' 카테고리의 다른 글

백준 2798번 블랙잭  (0) 2024.05.08
백준 2231번 분해합  (0) 2024.05.08
백준 2775번 부녀회장이 될테야  (1) 2024.05.01
백준 2629번 양팔저울  (0) 2024.04.02
백준 1520번 내리막길  (0) 2024.04.02