[알고리즘] 2 x n 타일링

2022. 8. 31. 19:09·알고리즘
반응형

문제 설명

가로 길이가 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
'알고리즘' 카테고리의 다른 글
  • [알고리즘] H-Index
  • [알고리즘] 다리를 지나는 트럭
  • [알고리즘] 배달 - 다익스트라 알고리즘
  • [알고리즘] 소수 범위 구하기
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    자바스크립트
    리액트
    네트워크
    ReactNative
    식물
    바질 키우기
    typescript
    ChatGPT
    영어독학
    webpack
    Docker
    다이소
    덤프
    네이버 부스트캠프
    바질
    CCNA
    redux
    next.js
    알고리즘
    javascript
    타입스크립트
    영어회화
    타일러영어
    프로그래머스
    리얼클래스
    리얼학습일기
    Babel
    Node.js
    CSS
    react
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[알고리즘] 2 x n 타일링
상단으로

티스토리툴바