본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

50일차 - 알고리즘(DP)

https://school.programmers.co.kr/learn/courses/30/lessons/12945

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

동적 계획법(Dynamic Programming)

복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법

  

- 큰 문제를 작은 문제로 나눌 수 있어야 한다.

- 작은 문제들이 반복되어 나타나고 사용되며, 작은 문제들의 결과값은 항상 같아야 한다.

- Top-down 방식과 Bottom-up 방식으로 구현할 수 있다.

- 메모이제이션(Memoization) : 모든 작은 문제들은 한 번만 계산해 DP 테이블에 저장하며 추후 재사용 시 이 DP 테이블을 이용한다.

  

문제 풀이

https://yurison.tistory.com/279

 

[프로그래머스/자바] 피보나치 수

❌ 재귀 함수를 이용한 실패 답안 ❌ class Solution { public int solution(int n) { return fibonacci(n) % 1234567; } private int fibonacci(int n) { if(n == 0) return 0; if(n == 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } } 실행

yurison.tistory.com