Computer Science/Algorithm 2

[Algorithm] 재귀

재귀란하나의 메소드 내에서 자기 자신을 호출하도록 하여 반복하는 개념하나의 재귀 호출은 하나의 부분 문제를 해결한다. → 부분 문제를 푸는 재귀에서 또 다른 부분 문제를 푸는 재귀 호출 → 반복반복.. → 재귀는 점점 작아져 이어지는 부분 문제 없이 답이 나오고 종료된다. 재귀 정의 순서상태 정의부분 문제는 하나의 문제에서 하나의 답이 나와야 한다.답을 결정하는 변수들을 상태라고 한다.한 부분 문제는 하나의 상태에 대한 답을 찾는 문제가 된다.예로 (x, y)로 상태 표기종료 조건재귀가 진행될수록 상태는 작아지고, 마지막엔 이어지는 부분 없이 답이 나와야 한다. (재귀 종료)답을 반환할 수 있도록 하는 것을 종료 조건이라고 한다.점화식가장 큰 상태가 어떤 과정을 거쳐 종료 조건에 도달하는지 정의부분 문제..

[Algorithm] DP 동적 계획법

재귀와 DP의 차이재귀는 하향식 접근DP는 상향식 접근, 계산 결과를 저장하는 memoization 사용DP 사용문제의 최적 결과를 낼 때동일한 작은 문제들이 반복하여 나타나는 경우작은 문제를 풀고 memoization 하면서 전체 문제 해결 class DP { public int solution(int[] arr) { int len = arr.length; if(len == 0) { return 0; } else if (len == 1) { return arr[0]; } int[] answer = new int[len]; answer[0] = arr[0]; ..