문제설명입력 & 출력나의 풀이문제 접근 방법"백준 - LCS" 문제는 최장 공통 부분 수열(LCS)알고리즘을 실제로 구현하는 문제입니다. LCS는 문제에서도 나와있듯이 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제입니다. 자세한 LCS의 내용은 아래의 포스팅에서 확인하실 수 있습니다. [Algorithm] 최장 공통 부분 수열(Longest Common Subsequence, LCS)최장 공통 부분 수열(Longest Common Subsequence, LCS)란❓최장 공통 부분 수열(LCS)은 두 수열이 주어졌을 때, 두 수열 모두의 부분 수열이 되는 수열 중 가장 긴 것을 말합니다. 여기서 중요한 점은 순서pixx.tistory.com전체 코드
DP
최장 공통 부분 수열(Longest Common Subsequence, LCS)란❓최장 공통 부분 수열(LCS)은 두 수열이 주어졌을 때, 두 수열 모두의 부분 수열이 되는 수열 중 가장 긴 것을 말합니다. 여기서 중요한 점은 순서는 반드시 유지되어야 하지만, '연속된' 부분이 아니어도 된다는 것입니다.부분 수열이란?부분 수열은 주어진 수열에서 일부 원소를 선택해 원래 순서를 유지하면서 만든 수열입니다. 예를 들어, "ABCDE"의 부분 수열은 다음과 같습니다."A" "ACE""ABD""ABCD" 등이 될 수 있습니다. 최장 공통 부분 수열 찾기공통 부분 수열을 찾을 때의 핵심 규칙은 다음과 같습니다.두 문자열에 모두 있는 문자여야 함선택한 문자들의 순서가 두 문자열에서의 순서와 일치해야 함문자열 1: ..
개요알고리즘 학습을 하다 보면 반드시 한 번쯤은 마주치게 되는 유명한 문제가 있습니다. 바로 '배낭 채우기 문제' (Knapsack Problem)입니다. 배낭 문제는 크게 두 가지로 나뉩니다. 물건을 부분적으로 쪼갤 수 있는 Fractional Knapsack 문제와, 물건을 온전히 하나만 선택하거나 선택하지 않아야 하는 0/1 Knapsack 문제가 있습니다. 실제 현실 세계에서는 물건을 마음대로 쪼개서 담을 수 없는 경우가 대부분이기 때문에, 0/1 배낭 문제가 주로 사용되고는 합니다. 본 글에서는 두 가지 문제 중 0/1 Knapsack 문제에 대해서 정리하고자 합니다. 배낭 문제 해결을 위한 초기 접근 방법들도둑이 보석 가게에 침입했다.배낭의 최대 용량을 초과하면 찢어지기 때문에, 무게 제한 ..
문제설명입력 & 출력나의 풀이문제 접근 방법"백준 - RGB 거리" 문제는 거리에 있는 집들을 R(red), G(green), B(blue)로 칠할 때, 다음 제약사항을 만족하면서 최소 비용으로 칠하는 문제입니다.인접한 집은 같은 색으로 칠할 수 없음1번 집과 2번 집은 다른 색이어야 함N번 집과 N-1번 집은 다른 색이어야 함2~N-1번 집은 양옆의 집과 다른 색이어야 함현재 집을 칠하는 최소 비용이 이전 집의 색상 선택에 따른 최소 비용에 의존하므로, 문제를 작은 부분 문제로 나누어 해결할 수 있는 최적 부분 구조를 만족하며, 동일한 계산이 반복되는 중복되는 부분 문제 특성도 있어 다이나믹 프로그래밍으로 해결할 수 있습니다. [Algorithm] 동적 계획법(Dynamic Programming, DP..