요점 정리 \- 완전 탐색 \- for문 + 재귀로 완전 탐색을 구현 \- 최대 횟수만큼 교환한경우, 숫자를 최대값과 비교해서 저장 \- 더이상 교환할 수 없는 상황인데, 교환 횟수 소진을 다 못한경우 짝수, 홀수 나눠서 끝자리수 교환 \- 현재 인덱스, 남은
linked list 형태로 graph생성queue를 사용해 구현 \- collection deque 사용stack 사용해 구현재귀 사용해 구현
ref: https://medium.com/@haeseok/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%88%98%EC%8B%9D-%EC%B5%9C%EB%8C%80%ED%99%94-eaa534d553
최대를 구하는 방법 1\. 완전 탐색다이나믹프로그래밍부분해를 구하고, 부분해의 최대가 지금 단계에서의 최적해다.그리디 알고리즘지금 단계에서 최선의 선택이 최적해다.
https://www.acmicpc.net/problem/11066작은 문제의 답이 큰 문제의 답을 계산할 때 활용두 가지 풀이 방법이 있음 \- 상향식 풀이: for 문 돌면서 작은 문제부터 답을 계산 \- 하향식 풀이: 분할정복 형태로 문제를 쪼
https://www.acmicpc.net/problem/11049작은 문제의 답이 큰 문제의 답을 계산할 때 활용두 가지 풀이 방법이 있음 \- 상향식 풀이: for 문 돌면서 작은 문제부터 답을 계산 \- 하향식 풀이: 분할정복 형태로 문제를 쪼
https://www.acmicpc.net/problem/1937작은 문제의 답이 큰 문제의 답을 계산할 때 활용두 가지 풀이 방법이 있음 \- 상향식 풀이: for 문 돌면서 작은 문제부터 답을 계산 \- 하향식 풀이: 분할정복 형태로 문제를 쪼개
https://www.acmicpc.net/problem/1915작은 문제의 답이 큰 문제의 답을 계산할 때 활용두 가지 풀이 방법이 있음상향식 풀이: for 문 돌면서 작은 문제부터 답을 계산하향식 풀이: 분할정복 형태로 문제를 쪼개면서 재귀로 구현 점
다이나믹프로그래밍큰 문제를 부분 문제로 나눠 해결한다부분문제가 반복된다즉, 분할정복으로 문제를 풀면서, 반복되는 답을 저장해두는 기법이 동적프로그래밍이다(다이나믹프로그래밍)LCS의 경우길이 n, m 의 LCS는 길이 (n-1, m), (n, m-1), (n-1, m-1
https://www.acmicpc.net/problem/16968가능한 모든 경우의 수를 탐색하는 유형이다재귀 형태로 문제를 푸는경우가 많으며, 각 단계마다 가능한 경우는 다음 재귀를 실행시키고 불가능한경우는 넘어간다재귀의 끝 (탈출조건)에 도달했을 때,
https://www.acmicpc.net/problem/16922가능한 모든 경우의 수를 탐색하는 유형이다재귀 형태로 문제를 푸는경우가 많으며, 각 단계마다 가능한 경우는 다음 재귀를 실행시키고 불가능한경우는 넘어간다재귀의 끝 (탈출조건)에 도달했을 때,
https://www.acmicpc.net/problem/16936가능한 모든 경우의 수를 탐색하는 유형이다재귀 형태로 문제를 푸는경우가 많으며, 각 단계마다 가능한 경우는 다음 재귀를 실행시키고 불가능한경우는 넘어간다재귀의 끝 (탈출조건)에 도달했을 때,
https://www.acmicpc.net/problem/15683가능한 모든 경우의 수를 탐색하는 유형이다문제의 depth가 크지 않을 때는 재귀로 풀 수 있다재귀로 푸는 문제가 많다재귀의 끝 (탈출조건)에 도달했을 때, 1을 리턴해 경우의 수를 카운트한다,
https://www.acmicpc.net/problem/16637가능한 모든 경우의 수를 탐색하는 유형이다문제의 depth가 크지 않을 때는 재귀로 풀 수 있다재귀로 푸는 문제가 많다재귀의 끝 (탈출조건)에 도달했을 때, 1을 리턴해 경우의 수를 카운트한다,