Algorithm/Study

[99클럽 코테 스터디] 📝 Day19. 동적 프로그래밍 (DP) 2

ioh'sDeveloper 2024. 6. 9. 22:46
99클럽 코테 스터디 19일차 TIL + 동적 프로그래밍 (DP) 2

📍 오늘의 학습 키워드

동적 프로그래밍

📝 공부한 내용 본인의 언어로 정리하기

동적 프로그래밍은 복잡한 문제를 효율적으로 해결하기 위한 알고리즘 기법 중 하나입니다. 이를 위해 몇 가지 주요 개념을 이해해야 합니다.

  1. 최적 부분 구조 (Optimal Substructure): 큰 문제를 작은 문제로 나눌 수 있고, 작은 문제의 최적해를 이용하여 큰 문제의 최적해를 구할 수 있는 구조입니다.
  2. 중복되는 부분 문제 (Overlapping Subproblems): 동적 프로그래밍에서는 같은 문제를 반복해서 해결해야 할 때가 있습니다. 중복되는 계산을 피하기 위해 이미 계산한 값을 저장하고 재활용합니다.
  3. 메모이제이션 (Memoization): 이미 계산한 값을 저장하고 재활용하는 기법으로, 주로 재귀적인 방법에서 활용됩니다.
  4. 탑다운 vs. 보텀업 (Top-down vs. Bottom-up): 동적 프로그래밍은 재귀적인 방식인 탑다운 방식과 순차적으로 작은 문제부터 해결하는 보텀업 방식으로 구현될 수 있습니다.
  5. 상태 정의 및 전이 관계 (State Definition and Transition Relation): 문제를 해결하기 위해 상태를 정의하고 상태 간의 전이 관계를 이해해야 합니다.

📖 오늘의 회고

📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지

오늘은 동적 프로그래밍에 대해 공부했습니다. 예전에도 한 번씩 접해봤지만, 다시 공부하니 좀 더 명확해진 느낌이었습니다.

🤔 어떻게 해결했는지

🔖 참고링크 ()

공부한 내용을 정리하면서 핵심 개념을 확실히 이해하기 위해 예제와 함께 복습했습니다. 또한 관련된 문제들을 풀어보며 실전 경험을 쌓았습니다.

🤓 무엇을 새롭게 알았는지

동적 프로그래밍이나 다이나믹 프로그래밍이라고도 불리는 이 기법이 어떤 상황에서 사용되는지, 그리고 어떻게 구현하는지에 대해 더 자세히 알게 되었습니다.

⏳ 내일 학습할 것은 무엇인지

내일은 동적 프로그래밍을 활용한 실제 문제들을 풀어보면서 실전적인 경험을 쌓아보려고 합니다.