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
- 배열
- 10992
- 누적 계산
- 보이는 학생
- 아스키코드
- array
- 두 배열 합치기
- Pointer
- 격자판
- 뒤집은 소수
- Two Pointer
- 10991
- GitHub #Commit #BaekJoon
- 등수구하기
- 투 포인터
- 연속부분수열
- 점수계산
- 공통원소 구하기
- 인프런
- 모든행과열대각선의합
- java
- 가장 짧은 문자거리
- ArrayList
- 임시반장 정하기
- 큰 수 출력하기
- 코테준비
- 최대 길이
- 알고리즘
- 백준
- 자바
Archives
- Today
- Total
ezhoon
[백준] 9059 1,2,3더하기_JAVA 본문
📖 문제
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
⚠️ 주의사항
- 같은 조합의 경우에도 다른 순서면 다른 조합으로 생각해야 한다.
✍️ 이해
/**
* 4를 예시로 들면 1+2+1, 2+1+1, 1+1+2 이런 식으로 순서만 달라도 다른 경우의 수로 생각
* 합이 입력한 값이 될 때까지 1,2,3 각각 더하고 만약 누적된 값이 입력값 보다 높으면 answer 누적 안하고 return 해서 스택 pop하기
*/
✏️ 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int answer = 0;
static int temp;
public void solution(int sum) {
if (sum > temp) {
return;
}
if (sum == temp) {
answer++;
} else {
solution(sum + 1);
solution(sum + 2);
solution(sum + 3);
}
}
public static void main(String[] args) throws IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
temp = Integer.parseInt(br.readLine());
T.solution(0);
arr[i] = answer;
answer = 0;
}
for (int i : arr) System.out.println(i);
}
}

'[Java] 백준 문제풀이 > DP' 카테고리의 다른 글
[백준] 11057 오르막 수_Java (0) | 2022.03.17 |
---|---|
[백준] 10844 쉬운 계단 수_Java (0) | 2022.03.03 |
[백준] 11727 2xn 타일링_Java (0) | 2022.03.01 |
[백준] 11726 2xn 타일링_Java (0) | 2022.03.01 |
[백준] 1463 1로 만들기_Java (0) | 2022.02.28 |