인프런 커뮤니티 질문&답변

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

9. 증가 수열 만들기(그리디)

증가수열 만들기

해결된 질문

작성

·

171

·

수정됨

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를 사용해서 시간 초과 걱정을 없어 보입니다.

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang
질문자

답변 감사합니다!

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang

작성한 질문수

질문하기