💯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의 합으로 나타내는 방법의 수를 출력한다.
알고리즘 분류
- 구현
- 문제열