본문 바로가기

DP2

백준 9251번 : LCS (Java) 문제 구현 방법 LCS (Longest Common Subsequence)는 최장 공통 부분 수열로 모두의 부분 수열이 되는 수열 중 가장 긴 값을 찾는 알고리즘 입니다. 부분 수열이기 때문에 연속할 필요가 없습니다. 2차원 배열을 생성하여 문자를 하나씩 비교해주었습니다. 아래 순서는 구현 과정을 간략하게 나타낸 것 입니다. 1. 편의를 위해 마진 설정 2. 문자가 같다면 이전에 저장된 값에 +1 (이전에 저장된 값에는 현재까지의 최장 부분 수열 길이가 저장) 3. 문자가 같지 않다면 현재까지 탐색한 부분 수열 길이에서 더 큰 값 저장 4. 위 과정 반복 코드를 보고 따라가면서 이해하는 것을 추천드립니다. 구현 코드 package BOJ.Gold; import java.io.BufferedReader; .. 2022. 3. 3.
백준 2611번 : 자동차경주 (Java) 문제 https://www.acmicpc.net/problem/2611 2611번: 자동차경주 첫째 줄에는 지점의 개수 N이 주어진다. 각 지점에는 1부터 N까지의 서로 다른 번호가 부여된다. 둘째 줄에는 도로의 개수 M이 주어진다. 이어 M개의 줄에는 p ,q ,r의 형식으로 도로의 정보가 주어 www.acmicpc.net 구현 방법 최근 위상 정렬 알고리즘을 밀고 있어 위상 정렬임을 알고 풀었는데 만약 몰랐다면 무슨 알고리즘 사용할지 꽤나 고민을 했을 것 같습니다. 다익스트라랑 비슷한 느낌일 수 있는데 다익스트라는 도달한 노드는 거리값이 확정됩니다. 하지만 자동차경주는 도달해도 그 값이 최대값인지 보장되지 않아 해당 노드까지 도달하는 모든 노드들을 비교해야하므로 위상정렬을 사용해야 합니다. 저는 점수.. 2022. 2. 11.