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

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

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

어미새의 개발일지

백준/JAVA

[백준/JAVA] 2133번 타일 채우기

2023. 2. 14. 15:58
  • https://www.acmicpc.net/problem/2133

1. 문제

3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.

2. 힌트

3. 문제 접근

1) 첫째 줄에 N의 크기를 입력받는다.
2) 경우의 수를 고려한 후 다이나믹 프로그래밍에 대한 점화식을 세운다.
2-1) 홀수인 경우 칸의 총 수가 홀수이기 때문에 2X1 혹은 1X2 크기의 타일로 채우지 못하기 때문에 0을 반환한다.
2-2) 짝수인 경우 크기가 2 작은 타일에서 채우는 경우의 수가 3가지이기 때문에 N-2를 매개변수로 하는 재귀함수에 3을 곱하는 경우를 가진다.
2-3) 짝수인 경우 중에 크기가 2보다 큰 짝수(4,6,8)만큼 작은 타일에서 채우는 경우의 수가 2가지이기 때문에 N-(2보다 큰 짝수)를 매개변수로 하는 재귀함수에 2를 곱하는 경우의 수도 가진다.
3) 점화식을 세워서 함수를 실행한다.

4. 코드

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

public class Main {
    static int tile[];
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        tile = new int[N+1];
        int result = Solution(N);
        System.out.println(result);
    }
    static int Solution(int n) {
        if(n==0) {
            return 1;
        }
        if(n%2==1) {
            return 0;
        }
        if(n==2) {
            return 3;
        }
        if(tile[n]!=0) {
            return tile[n];
        }
        int temp = n-2;
        while(temp>0) {
            tile[n] += 2*Solution(temp-2);
            temp-=2;
        }
        return tile[n] += Solution(n-2) * 3;
    }
}

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

[백준/JAVA] 11659번 구간 합 구하기 4  (0) 2023.02.14
[백준/JAVA] 14852번 타일 채우기 3  (0) 2023.02.14
[백준/JAVA] 2156번 포도주 시식  (0) 2023.02.14
[백준/JAVA] 10844번 쉬운 계단 수  (0) 2023.02.14
[백준/JAVA] 1764번 듣보잡  (0) 2023.02.14
    '백준/JAVA' 카테고리의 다른 글
    • [백준/JAVA] 11659번 구간 합 구하기 4
    • [백준/JAVA] 14852번 타일 채우기 3
    • [백준/JAVA] 2156번 포도주 시식
    • [백준/JAVA] 10844번 쉬운 계단 수
    누룽지맛치킨
    누룽지맛치킨

    티스토리툴바