💡Problem Solving/BOJ

[BOJ 1904] 01타일 (Java)

gom20 2021. 11. 3. 23:42

문제

https://www.acmicpc.net/problem/1904

 

1904번: 01타일

지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이

www.acmicpc.net

 

풀이

타일을 0과1로 표현했을 뿐이지 아래와 동일한 문제이다.

dp[1] = 1

dp[2] = 2

dp[3]부터는 아래 점화식을 따른다.

dp[i] = dp[i-1]+ dp[i-2]

 

2021.10.29 - [Problem Solving/Programmers] - [프로그래머스] 2 x n 타일링 (Java)

 

[프로그래머스] 2 x n 타일링 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길..

gom20.tistory.com

2021.10.29 - [Problem Solving/Programmers] - [프로그래머스] 멀리 뛰기 (Java)

 

[프로그래머스] 멀리 뛰기 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/12914# 코딩테스트 연습 - 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때..

gom20.tistory.com

 

소스코드

package dp;

import java.util.Scanner;

public class BOJ1904 {

    public static void main(String[] args) {
        // N = 1, 1
        // N = 2, 00, 11
        // N = 3, 100, 001, 111
        // N = 4, 1001, 0011, 1111, 0000, 1100

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] rs = new int[n+1];
        for(int i = 1; i <= n; i++){
            if(i == 1){
                rs[i] = 1;
                continue;
            }
            if(i == 2) {
                rs[i] = 2;
                continue;
            }
            rs[i] = (rs[i-1] + rs[i-2])%15746;
        }
        System.out.println(rs[n]);
    }
}