Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- English
- 탑다운
- 영어회화
- opic
- dynamicProgramming
- 이진탐색 #나무 자르기
- fibo
- dp
- 오픽노잼
- ㅂ
- 주석
- 바텀업
- topdown
- 이진탐색
- 메모이제이션
- stack 스택
- 피보나치수열
- 영어말하기
- 디피
- 오픽공부법
- 오픽
- 오픽노잼공부방법
- 안드로이드주석
- 안드로이드
- 오픽가격
- 오픽점수잘받는방법
- XML
- XML주석
- 다이나믹프로그래밍
Archives
RUBY
[BOJ] 1, 2, 3 더하기 3 본문
출처:: https://www.acmicpc.net/problem/15988
1. 문제 이해 및 해결과정
- 1,2,3 더하기 에서 범위가 바뀐 문제이다.
- 중간에 %100000~9 를 안해주면 메모리 초과가 난다.
2. 풀이방법
1. DP
#1, 2, 3 더하기 3
#https://www.acmicpc.net/problem/15988
import sys
t=int(input())
for _ in range(t):
n=int(input())
dp=[0]*1000002
dp[1] = 1
dp[2] = 2
dp[3] = 4
if n>=4:
for i in range(4,n+1):
dp[i]=(dp[i-1]+dp[i-2]+dp[i-3])%1000000009
print(dp[n]%1000000009)
2. DP 개선 코드 -시간 , 메모리 더 아낄 수 있음
#1, 2, 3 더하기 3
#https://www.acmicpc.net/problem/15988
import sys
sys.stdin = open("input.txt","r")
t=int(input())
dp=[0,1,2,4]
for i in range(4, 1000000 + 1):
dp.append((dp[i - 1] + dp[i - 2] + dp[i - 3])%1000000009)
for _ in range(t):
n=int(input())
print(dp[n]%1000000009)
3. 오답원인
- 코드중간에 %100~9를 안해주고 출력시에만 해줬더니 메모리 초과 -> 중간에도 해줄 것
4. 알게된 점
'PS > BOJ' 카테고리의 다른 글
[백준] 공항, 탑승구 (0) | 2020.08.19 |
---|---|
[BOJ] 1, 2, 3 더하기 5 (0) | 2020.07.08 |
[백준] 2×n 타일링 2 (0) | 2020.07.07 |
[BOJ] 2×n 타일링 (0) | 2020.07.07 |
[BOJ] 1, 2, 3 더하기 (0) | 2020.07.07 |
Comments