[BOJ 5430] AC (Python)

Gooder·2021년 5월 13일
0

알고리즘_문제풀기

목록 보기
19/25

문제링크

AC

풀이 전 계획 및 생각

배열을 deque를 이용해서 생성한 다음
명령어를 하나씩 수행하면서 R가 나오면 삭제할 위치를 조절해주면서 뒤집지않고도 뒤집은 효과를 낼 수 있게했다.
그리고 D가 나오면 현재 단계에서 삭제할 위치에서 값을 pop해서 삭제했다.

풀이

import sys
from collections import deque

t = int(sys.stdin.readline())

for _ in range(t):
    cmd = sys.stdin.readline()
    is_reverse = False#True면 왼쪽에서 삭제
    is_break = False
    n = int(sys.stdin.readline())

    input_array = sys.stdin.readline()[1:-2]
    array = deque(input_array.split(','))
    for command in cmd:
        if command == 'R':
            if is_reverse:
                is_reverse = False
                continue
            else:
                is_reverse = True
                continue
        if command == 'D':
            if not array or array[0] =='':
                is_break = True
                print("error")
                break
            elif is_reverse:
                array.pop()
            else:
                array.popleft()
    if not is_break:
        if is_reverse:
            array.reverse()
            print('['+','.join(array)+']')
        else:
            print('['+','.join(array)+']')

풀이하면서 막혔던 점과 고민했던 점

딱히 없었다.

풀이 후 알게된 개념과 소감

O(N)인 것을 O(1)로 해결할 수 있으면, 무조건 O(1)로 해결하자.

profile
세상을 변화시킬 신스틸러 서비스를 만들고싶은 개발자 Gooder 입니다.

0개의 댓글