문제)
답안 코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import sys
#sys.stdin=open("input.txt", "r")
n=int(input())
a=list(map(int, input().split()))
lt=0#왼쪽 포인터
rt=n-1#오른쪽 포인터
last=0#마지막으로 추출 된 값
res=""#정답
tmp=[]
while lt<=rt:#오른쪽 포인터가 크다면, 반복
if a[lt]>last:#왼쪽 자료가 마지막으로 나온 자료보다 크다면,
tmp.append((a[lt], 'L'))#왼쪽 추가
if a[rt]>last:#오른쪽 자료가 마지막으로 나온 자료보다 크다면,
tmp.append((a[rt], 'R'))#오른쪽 추가
tmp.sort()#정렬
if len(tmp)==0:#가져올 수 없다면, 종료
break;
else:
res=res+tmp[0][1]#추출된 자료중 더 작은 자료 정답에 추가
last=tmp[0][0]#마지막 자료 업데이트
if tmp[0][1]=='L':#왼쪽이라면
lt=lt+1#왼쪽포인터 1 증가
else:#오른쪽이라면,
rt=rt-1#오른쪽 포인터 1 감소
tmp.clear()#초기화
print(len(res))
print(res)
|
cs |
'코딩테스트 with PYTHON' 카테고리의 다른 글
[python] 코딩테스트 대비 - 그리디(역수열) (0) | 2022.01.28 |
---|---|
[python] 코딩테스트 대비 - 그리디(시뮬레이션 - 조건에 따른 최소 갯수) (0) | 2022.01.28 |
[python] 코딩테스트 대비 - 그리디(시뮬레이션-높이 맞추기) (0) | 2022.01.28 |
[python] 코딩테스트 대비 - 그리디 (조건 정렬) (0) | 2022.01.28 |
[python] 코딩테스트 대비 - 그리디 알고리즘(정해진 시간 최대 배치) (0) | 2022.01.28 |