[백준/Gold V] LCS - 9251

2024. 12. 8. 09:22·코딩 테스트 정복기/백준
반응형

[Gold V] LCS - 9251

문제 링크

분류

다이나믹 프로그래밍, 문자열

문제 설명

LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.

예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.

입력

첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.

출력

첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.

 

풀이 및 코드

풀이는 아래에 LCS 알고리즘과 함께 정리해두었습니다.

[Computer Science/Algorithm] - 최장 공통 부분 수열 (LCS; Longest common subsequence problem)

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] a = br.readLine().split("");
        String[] b = br.readLine().split("");
        int[][] map = new int[a.length+1][b.length+1]; // 수열의 길이를 저장하는 map

        int answer = 0;

        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < b.length; j++) {
                if (a[i].equals(b[j])) { // 만약 a[i]와 b[j]가 같은 문자라면 map[i+1][j+1]에 map[i][j]+1 을 넣는다.
                    map[i+1][j+1] = map[i][j] + 1;
                    answer = Math.max(answer, map[i+1][j+1]); // answer 값 큰걸로 변경
                }else{ // 다른 문자라면 map[i+1][j+1]에 map[i][j+1]과 map[i+1][j] 중 큰 값을 넣는다.
                    map[i+1][j+1] = Math.max(map[i+1][j], map[i][j+1]);
                }
            }
        }
        System.out.println(answer);
    }
}

 

메모리: 16944 KB, 시간: 124 ms

728x90
반응형

'코딩 테스트 정복기 > 백준' 카테고리의 다른 글

[백준/Gold IV] 트리의 지름 - 1967  (0) 2024.12.12
[백준/Gold III] 파티 - 1238  (0) 2024.12.11
[백준/Gold III] 웜홀 - 1865  (1) 2024.12.07
[백준/Gold IV] N-Queen - 9663  (1) 2024.12.05
[백준/Gold V] 숨바꼭질 3 - 13549  (0) 2024.12.02
'코딩 테스트 정복기/백준' 카테고리의 다른 글
  • [백준/Gold IV] 트리의 지름 - 1967
  • [백준/Gold III] 파티 - 1238
  • [백준/Gold III] 웜홀 - 1865
  • [백준/Gold IV] N-Queen - 9663
settong
settong
    250x250
  • settong
    개 발 자 국
    settong
  • 전체
    오늘
    어제
    • 전체보기 (202)
      • Computer Science (50)
        • Network (7)
        • Operating System (18)
        • Data Structure (9)
        • Database (11)
        • Algorithm (5)
      • Language (17)
        • Java (17)
        • Javascript (0)
        • Python (0)
      • Devops (20)
        • AWS (0)
        • Naver Cloud (16)
        • CICD (3)
        • 웹 서버 관리 (1)
      • Front (0)
        • React (0)
      • Backend (5)
        • Spring (5)
      • 코딩 테스트 정복기 (110)
        • 백준 (51)
        • 프로그래머스 (53)
        • 기타 (6)
      • etc (0)
      • 경제 상식 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    해시
    ncp
    백준
    ncp200
    Spring Boot
    CI/CD
    DFS
    프로그래머스
    다익스트라
    완전탐색
    백트래킹
    ncp202
    lcs
    github actions
    벨만포드
    다이나믹프로그래밍
    Network
    BFS
    분할정복
    집합
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
settong
[백준/Gold V] LCS - 9251
상단으로

티스토리툴바