가장 긴 공통 연속 부분 수열

면접 대비

시간 제한1초메모리 제한128 MB

요약
두 정수 수열이 주어질 때, 양쪽에 모두 나타나는 가장 긴 연속 구간의 길이를 구한다.
난이도

보통10점 중 4점

유형
동적 계획법, 배열, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

두 정수 수열 S1S1과 S2S2가 주어진다. S1S1의 길이는 L1L_1 (1≤L1≤1801 \le L_1 \le 180)이고, S2S2의 길이는 L2L_2 (1≤L2≤1801 \le L_2 \le 180)이다. 두 수열 모두에 공통으로 나타나는 가장 긴 연속 부분 수열의 길이를 출력하라.

S1S1의 원소는 S11,S12,…,S1L1S1_1, S1_2, \dots, S1_{L_1} (−100≤S1i≤100-100 \le S1_i \le 100)이고, S2S2의 원소는 S21,S22,…,S2L2S2_1, S2_2, \dots, S2_{L_2} (−100≤S2i≤100-100 \le S2_i \le 100)이다.

연속 부분 수열이란 수열에서 연속으로 이어진 원소들의 나열을 뜻한다. 예를 들어 수열 1 2 3 1의 연속 부분 수열은 빈 수열, 1, 1 2, 1 2 3, 1 2 3 1, 2, 2 3, 2 3 1, 3, 3 1, 그리고 다시 나타나는 1이다.

경쟁 프로그래밍을 처음 시작할 때 흔히 접하는 전형적인 문제이다.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 L1L_1과 L2L_2
  • 이어지는 L1L_1개의 줄: 각 줄에 정수 S1iS1_i가 하나씩 주어진다
  • 이어지는 L2L_2개의 줄: 각 줄에 정수 S2iS2_i가 하나씩 주어진다

출력

  • 한 줄에 정수 하나를 출력한다: S1S1과 S2S2에 공통으로 나타나는 가장 긴 연속 부분 수열의 길이

힌트

예제에서 정답 77은 공통 연속 부분 수열 1, 1, 1, 3, 2, 3, 3에 해당한다.

예제1

  1. 예제 1

    입력
    10 12
    1
    1
    1
    3
    2
    3
    3
    3
    4
    5
    1
    1
    1
    1
    3
    2
    3
    3
    4
    4
    5
    -8
    
    예상 출력
    7