728x90
반응형
문제
11보다 작은 정수 n을 입력하여 1,2,3 가지고 더하기할 수있는 경우의 수를 구한다.
풀이
1 , 2, 3, 4, 5 까지 숫자의 경우의 수를 나열하게 되면 n이 1,2,3 은 고정값이고 n=4 일때 경우의수는 1,2,3 갯수의 합, n=5 일때는 2,3,4 갯수의 합이었다.
마치 1, 2가 고정되어있는 피보나치 수열같았다.
규칙을 이해하니 코드는 쉽게 풀렸다.
public class Baekjoon_9095 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] array = new int[11];
array[0] = 1;
array[1] = 2;
array[2] = 4;
for (int i = 3; i < 11; i++) { // index 3부터 대입
array[i] = array[i-1]+array[i-2]+array[i-3];
}
for (int i = 0; i < n; i++) { // 출력
int inputNum = sc.nextInt();
System.out.println(array[inputNum-1]);
}
}
}
회고
계속 공책에 써보면서 고민해도 풀리지않았다.
호상이 도움아니었으면 못 풀었을 듯하다.
호상이는 한참 동안 규칙찾았다고한다.
푸는방법을 들은 후 나의 문제점은 더 다양한 케이스에서 시도해 보지 않은것이다. 제일 작은 수부터 큰 수대로 나열한 후 지난 수에서의 합을 구해보지 않았다. 그저 내가 써내려간 n 수 하나하나의 경우의수를 어떻게 계산할 지만 고민했다. 앞으로 이렇게 나열된 수가 있는 알고리즘을 보면 점층적으로 각각 수들의 일정한 규칙을 찾아 볼 것이다.
반응형
'문제 풀이' 카테고리의 다른 글
문제풀이 - java 백준 1748 수 이어쓰기 (0) | 2024.09.26 |
---|---|
문제풀이 - java 백준 6064 카잉달력 (1) | 2024.09.26 |