알고리즘

[백준, 자바, 11057번] 오르막 수

hminor 2024. 10. 23. 18:44
반응형

풀이

  • 처음에는 N이 1000까지 가는데 해당 풀이가 괜찮으려나 싶었는데
  • 잘 되어서 문제없이 해결.
  • 우선 길이 10인 배열의 각 인덱스 값을 1로 만들어 두고
  • N에 따라 while문을 반복하여 문제 해결하고자 함.
  • 그리고 아래 코드에서 코드를 더 가독성 좋게하려면,
  • while 문에 else 를 없애고, 그냥 if 절 안의 반복문만 사용하면 됨
  • 구분한 이유는 계속 쓸때없이 조건문 거치는게 별로여서 그냥 구분 함.

 

import java.util.*;
public class _11057 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] li = {1,1,1,1,1,1,1,1,1,1};
        int cnt = 1;
        int result = 0;
        while (cnt!=N) {
            if (cnt+1==N) {
                for (int i=0; i<10; i++) {
                    for (int j=i+1; j<10; j++) {
                        li[i]+=li[j]%10007;

                    }
                    result+=li[i];
                }
            } else {
                for (int i=0; i<10; i++) {
                    for (int j=i+1; j<10; j++) li[i]+=li[j]%10007;
                }
            }
            cnt++;
        }
        System.out.println(N==1?10:result%10007);
    }
}