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 | 31 |
Tags
- 너비우선탐색
- 완전 탐색
- openssl
- 위클리 6주차
- 복서 정렬하기
- 순열장난
- 줄어드는 숫자
- 백트렉킹
- 백트래킹
- 문서자동화
- 백준
- 프로그래머스
- 그래프
- Java
- BOJ
- 1174
- 39080
- 재귀
- 좋은 수열
- 몯느 순열
- 코딩테스트
- 입실 퇴실
- BFS
- 위클리 챌린지
- dfs
- 부분 수열의 합
- DP
- 10597
- 백트랙킹
- ElementTree
Archives
개발자-H 입니다.
BOJ - 1, 2, 3 더하기 본문
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
- DP 기본 문제이다.
- 메모리제이션으로 각 DP마다 결과 값을 저장하여 사용해야 시간초과가 나지않는다.
- 코딩테스트 몸 풀기용으로 간혹 나오는 경우가 있다.
import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.Scanner;
public class Main {
public static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws Exception {
int T = scanner.nextInt();
while (T-- > 0) {
int target = scanner.nextInt();
System.out.println(dp(target));
}
}
private static int dp(int target) {
int[] memo = new int[target + 3];
memo[1] = 1;
memo[2] = 2;
memo[3] = 4;
if (target < 4) {
return memo[target];
}
for (int i = 4; i <= target; i++) {
memo[i] = memo[i - 3] + memo[i - 2] + memo[i - 1];
}
return memo[target];
}
}
'Algorithm > 문제 풀이' 카테고리의 다른 글
BOJ - 동전 0 (0) | 2021.08.16 |
---|---|
BOJ - ATM (0) | 2021.08.16 |
BOJ - 토마토 (7576) (0) | 2021.08.14 |
BOJ - 최소비용 구하기 (0) | 2021.08.13 |
BOJ - 파도반 수열 (0) | 2021.08.12 |
Comments