• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

증가수열 만들기

23.09.11 15:08 작성 23.09.11 15:14 수정 조회수 129

0

from collections import deque

N = int(input())
N_list = list(map(int, input().split()))

dq = deque(N_list)
current = 0
res = ""

left = dq.popleft()
right = dq.pop()

while len(dq) >= 0:
    if current > left and current > right:
        break
    if len(dq) == 0:
        if current < left and current < right:
            if left < right:
                res = res + 'L'
                # current = left
                break
            elif left > right:
                res = res + 'R'
                # current = right
                break
        elif left > current > right:
            res = res + 'L'
            # current = left
            break
        elif right > current > left:
            res = res + 'R'
            # current = right
            break
    else:
        if current < left and current < right:
            if left < right:
                res = res + 'L'
                current = left
                left = dq.popleft()
            elif left > right:
                res = res + 'R'
                current = right
                right = dq.pop()
        elif left > current > right:
            res = res + 'L'
            current = left
            left = dq.popleft()
        elif right > current > left:
            res = res + 'R'
            current = right
            right = dq.pop()

print(len(res))
print(res)

deque 이용하여 pop(), popleft() 로 left, right 설정하여
분기하면서 찾았는데 실제 코딩테스트에서 이러한 코드도 시간 초과 문제가 발생하지 않을 지 궁금합니다.

강사님 풀이의 경우 while 문 안에 sort()가 계속 돌아가서 시간 이 더 오래 걸릴거 같다고 생각해서 질문드립니다!

답변 1

답변을 작성해보세요.

0

안녕하세요^^

참신하고 좋은 코드네요.

네. 이 문제는 N제한이 100이고 또 deque를 사용해서 시간 초과 걱정을 없어 보입니다.

답변 감사합니다!