누룽지맛치킨
어미새의 개발일지
누룽지맛치킨
전체 방문자
오늘
어제
  • 분류 전체보기 (86)
    • 코틀린 (8)
    • 안드로이드 (5)
      • 디자인 (2)
      • 개발 (2)
      • 도구 (1)
    • 피그마 (1)
    • 대외활동 (0)
    • 프로젝트 (0)
    • 백준 (55)
      • JAVA (55)
    • 알고리즘 (3)
    • 클라우드 (5)
    • 스터디 (2)
      • 코테 (2)
    • 자료구조 (5)
    • 컴퓨터 기술 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코틀린 runBlocking
  • 코틀린 인 액션
  • 코틀린
  • 자바 Priority Queue
  • 백준 자바 2292번
  • 백준 자바 누적합
  • 백준 자바 벌집
  • 백준 자바
  • 자료구조
  • 백준 자바 다이나믹 프로그래밍
  • Room version 올리기
  • 백준 자바 2559번
  • 클라우드 컴퓨팅
  • 안드로이드
  • Room Migration
  • 클라우드
  • 백준 자바 정렬
  • 백준 자바 수열
  • 안드로이드 디자인
  • 알고리즘 조합

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
누룽지맛치킨

어미새의 개발일지

백준/JAVA

[백준/JAVA] 10844번 쉬운 계단 수

2023. 2. 14. 15:56
  • 동적 계획법을 이용해 계단 수를 구하는 문제
    https://www.acmicpc.net/problem/10844

1. 문제

45656이란 수를 보자.

이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다.

N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다.

2. 문제 접근

1) 첫째 줄에 계단 수의 길이 N을 입력받는다.
2) 자리 수가 1일 때는 1부터 9까지 한개씩이기 때문에 0~9를 인덱스로 가지는 int형 배열에 1부터 9까지 인덱스의 value를 1로 정한다.
3) 자리 수 만큼 반복하면서 끝 수의 위 아래 수의 인덱스에 기존의 값들을 더해주고 마지막에 기존에 있던 수들을 빼주는 형식으로 계단 수를 구할 수 있다.

3. 코드

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;

public class Main {
    static int last[] = new int[10];
    static int pre[] = new int[10];
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        for(int i=1;i<10;i++){
            last[i]++;
            pre[i]++;
        }
        for(int i=2;i<=N;i++){
            for(int j=0;j<10;j++){
                if(j>0){
                    pre[j] += last[j-1];
                }
                if(j<9){
                    pre[j] += last[j+1];
                }
            }
            for(int j=0;j<10;j++){
                pre[j] -= last[j];
                pre[j] %= 1000000000;
                last[j] = pre[j];
            }
        }
        int result = 0;
        for(int i=0;i<10;i++){
            result += last[i];
            result %= 1000000000;
        }
        System.out.println(result);
    }
}

'백준 > JAVA' 카테고리의 다른 글

[백준/JAVA] 2133번 타일 채우기  (0) 2023.02.14
[백준/JAVA] 2156번 포도주 시식  (0) 2023.02.14
[백준/JAVA] 1764번 듣보잡  (0) 2023.02.14
[백준/JAVA] 9184번 신나는 함수 실행  (0) 2023.02.10
[백준/JAVA] 9663번 N-Queen  (0) 2023.02.10
    '백준/JAVA' 카테고리의 다른 글
    • [백준/JAVA] 2133번 타일 채우기
    • [백준/JAVA] 2156번 포도주 시식
    • [백준/JAVA] 1764번 듣보잡
    • [백준/JAVA] 9184번 신나는 함수 실행
    누룽지맛치킨
    누룽지맛치킨

    티스토리툴바