[BOJ 10844] 쉬운 계단수 (java)
문제 링크
문제풀이
package basics_400;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ10844 {
//자료형 범위 신경쓰기
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
// memo[i][j] = 길이 i, 마지막수 j인 계단수 갯수
long memo[][] = new long[n+1][10];
long sum = 0;
//1자리수일때 초기화
memo[1][1] = 1;
memo[1][2] = 1;
memo[1][3] = 1;
memo[1][4] = 1;
memo[1][5] = 1;
memo[1][6] = 1;
memo[1][7] = 1;
memo[1][8] = 1;
memo[1][9] = 1;
// 길이가 2 이상인 수
for(int i=2;i<=n;i++) {
//마지막 자리수(0~9)
for (int j = 0; j <= 9; j++) {
if (j == 0) //마지막수가 0일때는 큰 계단수만 고려하면 됨
{
memo[i][j] = (memo[i - 1][j + 1])% 1000000000;
}
else if (j == 9) {//마지막 수가 9일때는 작은 계단수만 고려하면 됨
memo[i][j] = (memo[i - 1][j - 1])% 1000000000;
}
else { //0,9가 아닐때는 작은 계단수, 큰 계단수 둘다 고려해줘야함
memo[i][j] = (memo[i - 1][j - 1] + memo[i - 1][j + 1])% 1000000000;
}
}
}
//길이 n의 모든 계단수
for (int k = 0; k <= 9; k++) {
sum += memo[n][k];
}
System.out.println(sum%1000000000);
}
}
자소서쓰고 면접보고 정처기 공부하고 이것저것 하느라 제일 중요한 안드랑 알고리즘 풀기가 미뤄졌었다 ㅠ
오랜만에 문제푸니까 가물가물하네 ^ㅡ^.. 너무너무 아쉽지만 더 분발해야겠다. 다시 정신차리고 힘내자 !
Comments