알고리즘 풀이 - 백준 1463(1로 만들기, DP)
관련글 Dynamic Programming 관련 포스팅은 여기를 참조 1. 문제 문제 링크는 여기를 참조 간단하게 설명하여 1 ~ 1,000,000 까지 숫자 중 하나를 입력 받아 해당 숫자에서 1을 빼거나, 2 또는 3으로 나누는 작업을 반복하여 1이 되게 하려면 몇 번의 연산이 필요한지 구하는 문제이다. 2. 풀이 우선 이 문제는 DP로 풀 수 있다. DP로 풀 수 있는지 어떻게 알 수 있을까? DP인지 아닌지 확인하려면 우선 2가지 조건이 만족되는지를 알아야 한다. 그 조건은 다음과 같다. 1) Overlapping Subproblems(겹치는 부분 문제) 2) Optimal Substructure(최적 부분 구조) 예를 들어, 숫자 5를 1로 만들기 위해서는 아래와 같은 방법이 있을 것이다. 5 ..