본문 바로가기
코딩문제

[백준 30805번] 사전 순 최대 공통 부분 수열 (Python)

by 컴돌이_예준 2024. 7. 9.
import sys
input = sys.stdin.readline
n = int(input())
a = list(map(int, input().split()))
m = int(input())
b = list(map(int, input().split()))
ans = []

while a and b:  # a와 b 모두 항목이 있는 동안 실행
    max_a = max(a)
    max_b = max(b)

    if max_a == max_b:
        ans.append(max_a)
        # 최댓값이 같은 경우, 최댓값 이후의 요소만 남기기
        a = a[a.index(max_a)+1:]
        b = b[b.index(max_b)+1:]
    elif max_a > max_b:
        # max_a가 더 클 경우 max_a를 제거
        a.remove(max_a)
    else:
        # max_b가 더 클 경우 max_b를 제거
        b.remove(max_b)
  
print(len(ans))
if len(ans) != 0:
    print(" ".join(map(str, ans)))

 

어려웠다..ㅜㅜ