1부터 N까지의 모든 자연수로 구성된 길이 N의 수열이 주어집니다. 이 수열의 왼쪽 맨 끝 숫자 또는 오른쪽 맨 끝 숫자 중 하나를 가져와 나열하여 가장 긴 증가수열 을 만듭니다. 이때 수열에서 가져온 숫자(왼쪽 맨 끝 또는 오른쪽 맨 끝)는 그 수열에서 제거됩니 다. 예를 들어 2 4 5 1 3 이 주어지면 만들 수 있는 가장 긴 증가수열의 길이는 4입니다. 맨 처음 왼쪽 끝에서 2를 가져오고, 그 다음 오른쪽 끝에서 3을 가져오고, 왼쪽 끝에서 4, 왼쪽 끝에서 5를 가져와 2 3 4 5 증가수열을 만들 수 있습니다. ▣ 입력설명 첫째 줄에 자연수 N(3<=N<=100)이 주어집니다. 두 번째 줄에 N개로 구성된 수열이 주어집니다. ▣ 출력설명 첫째 줄에 최대 증가수열의 길이를 출력합니다. 두 번째 줄에 가져간 순서대로 왼쪽 끝에서 가져갔으면 ‘L', 오른쪽 끝에서 가져갔으면 ’R'를 써 간 문자열을 출력합니다.(단 마지막에 남은 값은 왼쪽 끝으로 생각합니다.)
import sys
# sys.stdin=open("input.txt","rt")
# n,m = map(int,input().split())
n = int(input())
arr = list(map(int,input().split()))
# n = input()
# arr = [list(map(int,input().split())) for _ in range(n)]
# arr = [int(input()) for _ in range(n)]
res = 0
lt = 0
rt=n-1
max = -1
text =''
while True:
if max > arr[lt] and max > arr[rt]:
break
if max > arr[rt] or max< arr[lt] < arr[rt]:
max = arr[lt]
lt+=1
text +='L'
res+=1
elif max > arr[lt] or max< arr[rt] < arr[lt]:
max = arr[rt]
rt-=1
text +='R'
res+=1
print(res)
print(text)'코테연습 > python' 카테고리의 다른 글
| 두 정수 사이의 합 (0) | 2026.04.25 |
|---|---|
| 같은 숫자는 싫어 (0) | 2026.04.25 |
| 창고 정리 (0) | 2026.04.23 |
| 침몰하는 타이타닉(그리디) (0) | 2026.04.22 |
| 씨름 선수(그리디) (0) | 2026.04.20 |