Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준
- 부스트코스
- 액티비티
- Node.js
- 데이터바인딩
- 노마드북클럽
- BOJ
- listview
- codility
- CS50
- 알고리즘
- 사용자폴더
- java
- 지하철api
- RecyclerView
- activity
- Android
- Windows10
- 안드로이드
- 노개북
- CardView
- 윈도우10
- 트렐로 삭제
- 클린코드
- 북클럽
- 부스트캠프
- androidstudio
- github
- 노마드코더
- 선형레이아웃
Archives
- Today
- Total
Be Developer
[백준/BOJ] 1904번 : 01타일 (Java) 본문
반응형
문제요약
00과 1로 만들 수 있는 2진 수열의 개수를 구하시오.
풀이
N=1일 때, [1] - 1개
N=2일 때, [00, 11] - 2개
N=3일 때, [001, 100, 111] - 3개
N=4일 때, [0000, 0011, 1001, 1100, 1111] - 5개
N=5일 때, [00001, 00100, 10000, 00111, 10011, 11001, 11100, 11111] - 8개
즉, N[i] = N[i-1] + N[i-2]
피보나치 수열로 풀 수 있다.
코드
import java.util.Scanner;
public class BOJ_1904 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[] tiles = new int[n+1];
tiles[1] = 1;
tiles[2] = 2;
for (int i=3; i<=n; i++) {
tiles[i] = (tiles[i-1] % 15746) + (tiles[i-2] % 15746);
}
System.out.println(tiles[n] % 15746);
scan.close();
}
}
+200920 추가
다시 풀어보니 계속 런타임 에러가 떠서 무슨 일인가 했더니
n이 0인 경우 배열 할당에 문제가 생겨서 그랬다.
import java.io.*;
public class BOJ_1904 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
if (n <= 2) {
System.out.println(n);
} else {
int[] tiles = new int[n+1];
tiles[1] = 1;
tiles[2] = 2;
for (int i = 3; i <= n; i++) {
tiles[i] = (tiles[i - 1] + tiles[i - 2]) % 15746;
}
System.out.println(tiles[n]);
}
}
}
반응형
'Algorithm' 카테고리의 다른 글
[백준/BOJ] 5397번 : 키로거(Java) (0) | 2020.07.28 |
---|---|
[백준/BOJ] 11399번 : ATM (Java) (0) | 2019.08.19 |
[백준/BOJ] 9461번 : 파도반 수열 (Java) (0) | 2019.08.17 |
[Codility] Lesson 5 : PassingCars (Java) (0) | 2019.08.13 |
[Codility] Lesson 4 : FrogRiverOne (Java) (0) | 2019.04.10 |
Comments