반응형
문제 설명
가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 다음과 같이 2가지 방법이 있습니다.
- 타일을 가로로 배치 하는 경우
- 타일을 세로로 배치 하는 경우
예를들어서 n이 7인 직사각형은 다음과 같이 채울 수 있습니다.
직사각형의 가로의 길이 n이 매개변수로 주어질 때, 이 직사각형을 채우는 방법의 수를 return 하는 solution 함수를 완성해주세요.
제한사항
- 가로의 길이 n은 60,000이하의 자연수 입니다.
경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요.
입출력 예
n | result |
4 | 5 |
입출력 예 #1
다음과 같이 5가지 방법이 있다.
나의 풀이
const n = 60000;
// 2 => 2
// 3 => 3
// 4 => 5
// 5 => 8
function solution(n) {
let preV = 0;
let nextV = 1;
for (let i = 1; i <= n; i++) {
let answer = (preV + nextV) % 1000000007;
preV = nextV;
nextV = answer;
}
return nextV;
}
solution(n);
문제가 이해가 안되서 오래 걸렸다 ㅠㅠ...
경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요.
이 말뜻이 마지막 return을 할때 나눠서 나머지를 넘겨주란 뜻인줄 알아서 그방식대로 풀었더니
틀려서 피보나치 수열로 푸는 문제가 아닌줄 알았다....
알고보니 결과마다 나눠주는 것이였고 푸니 정확성을 통과했다.
근데 효율성에서는 문제가 발생했는데,
let preV = 0;
let nextV = 1;
let answer = 0;
for (let i = 1; i <= n; i++) {
answer = (preV + nextV)% 1000000007;
preV = nextV;
nextV = answer;
}
최초엔 answer을 따로 밖에 두고 계산을 하니 시간 효율성에 문제가 발생해서 반복문 안에 변수를 선언하니
통과했다.
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] H-Index (2) | 2022.09.02 |
---|---|
[알고리즘] 다리를 지나는 트럭 (0) | 2022.09.01 |
[알고리즘] 배달 - 다익스트라 알고리즘 (0) | 2022.08.30 |
[알고리즘] 소수 범위 구하기 (1) | 2022.08.24 |
[알고리즘] 배달 - BFS를 다시 공부하고 (0) | 2022.08.20 |