https://www.acmicpc.net/problem/2550
풀이
사용한 알고리즘 : LIS
풀이 전략
import sys
input=sys.stdin.readline
N=int(input())
switch=list(map(int,input().split()))
bulb=list(map(int,input().split()))
arr=[]
for i in switch:
arr.append(bulb.index(i))
length=[0]*N
preNode=[]
for i in range(N):
preNode.append(i)
for i in range(N):
length[i]=1
k=0
for j in range(i):
if arr[j]<arr[i]:
if length[i]<length[j]+1:
length[i]=length[j]+1
preNode[i]=j
temp=length.index(max(length))
result=[]
x=temp
while True:
result.append(switch[x])
if preNode[x]==x:
break
x=preNode[x]
result.sort()
print(max(length))
for i in result:
print(i,end=' ')
'알고리즘||코딩테스트 > 백준' 카테고리의 다른 글
[백준 2042번] 구간 합 구하기 - Python (0) | 2023.07.09 |
---|---|
[백준 1365번] 꼬인 전깃줄 - Python (0) | 2023.07.08 |
[백준 18353번] 병사 배치하기 - Python (0) | 2023.07.06 |
[백준 2470번] 두 용액 - Python (0) | 2023.07.05 |
[백준 19598번] 최소 회의실 개수 - Python (0) | 2023.07.04 |