Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[알고리즘]BOJ_9095_1,2,3 더하기(파이썬 다이나믹 프로그래밍, continue, 나머지 연산) 본문
Contents
접기
#문제링크
9095번: 1, 2, 3 더하기 (acmicpc.net)
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
#문제
https://www.acmicpc.net/problem/9095
1, 2, 3 더하기
시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 (추가 시간 없음) 512 MB 58213 37350 24785 62.116%
문제
정수 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의 합으로 나타내는 방법의 수를 출력한다.
예제 입력 1
3
4
7
10
예제 출력 1
7
44
274
#답안
import sys
input=sys.stdin.readline
#테스트케이스 개수 t를 입력받는다.
t=int(input())
#for문을 돌리며 정수 n을 t개 입력받는다.
for _ in range(t) :
n=int(input())
# dp테이블로 쓸 리스트를 생성하고 0으로 초기화한다.
dp = [0] * (n + 1) # 1부터 사용할 것이므로 n+1의 크기로 초기화해야한다.
#for을 4부터 n까지 돌린다.
for i in range(1,n+1) :
if i==1 :
dp[1] = 1
continue
elif i==2 :
dp[2] = 2
continue
elif i==3 :
dp[3] = 4
continue
dp[i]=dp[i-1]+dp[i-2]+dp[i-3]
print(dp[n])
▲답안 설명
'공부 > 알고리즘(파이썬)' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰]6장_문자열 조작 Intro (0) | 2021.05.14 |
---|---|
[알고리즘]BOJ_11727_2Xn타일링2(파이썬 continue, 다이나믹 프로그래밍, 나머지 연산) (0) | 2021.04.14 |
[알고리즘]BOJ_11726_2xn 타일링(파이썬 continue, 다이나믹 프로그래밍, 나머지 연산) (0) | 2021.04.13 |
Comments