https://www.acmicpc.net/problem/12919 처음 봤을 때 드는 생각인 S에서 T를 만드는 방식은 경우의 수가 너무 다양해 접근하기 힘들다. 따라서 역방향인 T에서 S를 만드는 방식을 선택할 것이다. 필자는 C++에서 제공하는 문자열 함
https://www.acmicpc.net/problem/5582 두 문자열이 주어졌을 때, 가장 긴 공통 부분 문자열을 찾으려면 일단 두 문자열의 길이만큼의 2차원 dp배열을 선언한다. 이후 for문을 통해 두 문자열의 문자를 하나씩 비교해가면서 만약 같은
https://www.acmicpc.net/problem/13164 조별로 티셔츠를 맞추는 비용을 최소화하려면 어떻게 해야할까? 티셔츠를 맞추는 비용은 조 내부에서 가장 키가 큰 사람과 작은 사람의 차이다. 따라서 옆사람과의 키 차이를 저장한 뒤, 그 키 차이
https://www.acmicpc.net/problem/1759 암호를 만들 때 고려해야 할 점은 암호는 최소 한 개의 모음과 최소 두 개의 자음으로 구성되어 있으며 알파벳이 증가하는 구성을 가진다는 것이다. 따라서 초기에 알파벳들을 입력받아 정렬을 하고
https://www.acmicpc.net/problem/15686 입력에서 볼 수 있듯이 도시에 존재하는 치킨집의 최대 개수는 13개가 최대이다. 또한 N이 최대 50이라 NxN배열도 큰 배열이 아니기 때문에 완전탐색으로 해결이 가능하다. 우선 존재하는
https://www.acmicpc.net/problem/1932 구하는 것은 정수 삼각형에서 합이 최대가 되는 경로이다. 필자는 경로를 구성할 때 아래에서 위로 올라오면서 각 구간에서의 합의 최댓값을 갱신하는 방법을 사용했다. 한번 방문한 지점은 다시 갱신
https://www.acmicpc.net/problem/1463 문제에서는 3가지 연산을 사용하여 주어진 정수 N을 1로 만드는 연산의 횟수의 최솟값을 구해야 한다. 하지만 각각의 수 별로 최솟값이 되는 방식은 갖가지이므로 우리는 N 전까지의 모든 수들의
https://www.acmicpc.net/problem/1149 문제에서 i번째 집과 i-1번째 집은 색이 달라야 한다고 주어졌다. 또한 모든 집을 칠하는데 드는 비용의 최솟값을 구해야하므로 i번째 집까지의 최소 비용을 dp배열에 갱신하면서 진행해 N번째