[프로그래머스/C++ 문제 풀이] Lv. 2 - 멀리 뛰기

2024. 8. 26. 13:07·코딩테스트/프로그래머스 (Lv. 2)
목차
  1. 문제 설명
  2. 제한 사항
  3. 입출력 예
  4. 문제 풀이
  5. 정답 코드
728x90
반응형

문제 설명

효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다.

칸이 총 4개 있을 때, 효진이는
(1칸, 1칸, 1칸, 1칸)
(1칸, 2칸, 1칸)
(1칸, 1칸, 2칸)
(2칸, 1칸, 1칸)
(2칸, 2칸)
의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다.

 

멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다.

제한 사항

  • n은 1 이상, 2000 이하인 정수입니다.

입출력 예

 

입출력 예 #1
위에서 설명한 내용과 같습니다.

 

입출력 예 #2
(2칸, 1칸)
(1칸, 2칸)
(1칸, 1칸, 1칸)
총 3가지 방법으로 멀리 뛸 수 있습니다.


문제 풀이

저는 이번 문제를 처음 보고 모든 방법의 수를 구하는 문제이기에 모든 경우의 수를 전부 체크하면 되겠다는 생각으로 완전탐색으로 접근을 시도했습니다.

 

하지만 최대 크기가 2000인 N을 1칸 or 2칸씩 움직이는 과정에서 시간초과가 발생하여 오답을 받았으며, 수학적으로 식을 세울 수 있는지 체크해보기 시작했습니다.

 

손으로 간단히 1 ~ 6까지 경우의 수를 세어보니 피보나치 수와 유사한 결과를 얻어 피보나치 수열을 DP를 사용해 구현하게 되었으며, 문제를 해결할 수 있었습니다.

 

아직은 문제와 알고리즘만을 가지고 시간복잡도를 체크하는 것이 미숙한 것 같습니다.  

정답 코드

더보기

풀이 시간 : 15m 39s

#include <string>
#include <vector>

using namespace std;

long long cnt;

int DP[2002];

int Fibo(int n)
{
    if (n <= 3) return n;
    
    if (DP[n] == 0) 
    {
        DP[n] = Fibo(n - 2) + Fibo(n - 1) ;
        return DP[n] % 1234567;
    }
    else
    {
        return DP[n];   
    } 
}

long long solution(int n) {

    // n = 1 : 1
    // n = 2 : 2
    // n = 3 : 3
    // n = 4 : 5
    // n = 5 : 8
    // n = 6 : 13
    // -> 피보나치 수열과 비슷
    
    return Fibo(n);
}
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 > 프로그래머스 (Lv. 2)' 카테고리의 다른 글

[프로그래머스/C++ 문제 풀이] Lv. 2 - 영어 끝말잇기  (0) 2024.08.28
[프로그래머스/C++ 문제 풀이] Lv. 2 - N개의 최소 공배수  (0) 2024.08.27
[프로그래머스/C++ 문제 풀이] Lv. 2 - 구명보트  (0) 2024.08.26
[프로그래머스/C++ 문제 풀이] Lv. 2 - 점프와 순간 이동  (0) 2024.08.26
[프로그래머스/C++ 문제 풀이] Lv. 2 - 카펫  (0) 2024.08.25
  1. 문제 설명
  2. 제한 사항
  3. 입출력 예
  4. 문제 풀이
  5. 정답 코드
'코딩테스트/프로그래머스 (Lv. 2)' 카테고리의 다른 글
  • [프로그래머스/C++ 문제 풀이] Lv. 2 - 영어 끝말잇기
  • [프로그래머스/C++ 문제 풀이] Lv. 2 - N개의 최소 공배수
  • [프로그래머스/C++ 문제 풀이] Lv. 2 - 구명보트
  • [프로그래머스/C++ 문제 풀이] Lv. 2 - 점프와 순간 이동
리태s
리태s
게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
LeeTaes 공부노트게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
    반응형
    250x250
  • 리태s
    LeeTaes 공부노트
    리태s
  • 전체
    오늘
    어제
    • Home (165)
      • 프로젝트 (20)
        • Isaac 3D (5)
        • TimelessAdventure (13)
        • FruitsPuzzle (2)
      • Game Programming (25)
        • C# (8)
        • Unity Engine (6)
        • Unreal Engine (8)
        • UE_Multiplayer (3)
      • 코딩테스트 (111)
        • 프로그래머스 (Lv. 0) (27)
        • 프로그래머스 (Lv. 1) (31)
        • 프로그래머스 (Lv. 2) (21)
        • 백준 (Study) (29)
        • 알고리즘 (3)
      • CS지식 (7)
        • 운영체제 (7)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pcce 기출문제
    unity
    tsoftobjectptr
    2018 kakao
    청년취업사관학교
    Summer/Winter Coding
    2019 kakao
    fruitspuzzle
    백준
    후기
    프로젝트
    fsoftobjectpath
    issac3d
    C++
    c#
    Unreal Engine
    unrealengine
    2022 kakao
    CS지식
    delegate
    sesac
    코딩테스트
    Algorithm
    프로세스
    구현
    project t.a develop
    timelessadventure
    프로그래머스
    dataasset
    ai controller
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
리태s
[프로그래머스/C++ 문제 풀이] Lv. 2 - 멀리 뛰기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.