1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12900#qna
코딩테스트 연습 - 2 x n 타일링
가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는
programmers.co.kr
2. 나의 풀이
//연습문제 - 2 * n 타일링
public int solution100(int n) {
int ans = 0;
int i = 3;
int n_1 = 1;
int n_2 = 2;
while(i < n) {
ans = (n_1 + n_2) % 1000000007;
n_1 = n_2;
n_2 = ans;
i++;
}
ans = (n_1 + n_2) % 1000000007;
return ans;
}
/* 재귀를 사용하니 시간 초과 발생
static int ans = 0;
public int solution100(int n) {
allcase(n, 0);
return ans % 1000000007;
}
void allcase(int n, int su) {
if(su == n) {
ans += 1;
return;
}else if(su >= n) {
return;
}
allcase(n, su + 1);
allcase(n, su + 2);
System.out.println("answer : " + ans);
}
*/
- 피보나치 로직으로 구현할 수 있다는 개념을 잡지 못한 부분이 로직 구현에 오래 걸린 원인
3. 다른 사람 풀이
class TryHelloWorld {
public int tiling(int n) {
int a = 1;
int b = 1;
for (int i = 0; i < n - 1; i++) {
int fib = (a + b) % 100000;
a = b;
b = fib;
}
return b;
}
public static void main(String args[]) {
TryHelloWorld tryHelloWorld = new TryHelloWorld();
//아래는 테스트로 출력해 보기 위한 코드입니다.
System.out.print(tryHelloWorld.tiling(2));
}
}
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
(Java)프로그래머스 코딩테스트 연습 - 탐욕법(Greedy) - 섬 연결하기 (0) | 2021.01.09 |
---|---|
(Java)프로그래머스 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 풍선 터트리기 (0) | 2020.12.20 |
(Java)프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - [1차] 추석 트래픽 (0) | 2020.12.14 |
(Java)프로그래머스 코딩테스트 연습 - 2017 팁스타운 - 짝지어 제거하기 (0) | 2020.12.13 |
(Java)프로그래머스 코딩테스트 연습 - 연습문제 - JadenCase 문자열 만들기 (0) | 2020.12.13 |