[백준] 5430번 AC

HL·2021년 5월 21일
0

백준

목록 보기
89/104
post-thumbnail

문제 링크

https://www.acmicpc.net/problem/5430

문제 설명

  • 두가지 함수 리스트가 주어짐
    • reverse
    • popleft
  • 숫자 리스트가 주어짐
  • 반영

풀이

  • 그대로 구현하니 시간 초과가 난다
  • 함수는 무조건 한번씩 체크해야해서 함수때문은 아니고
  • 그때그때 reverse하면 N번을 더 돌아야해서 그런듯
  • 방향 변수를 하나 두고 pop 방향을 바꿔준다

코드

import sys
from collections import deque

def solution():
    read = sys.stdin.readline
    t = int(read())
    for _ in range(t):

        # 입력 받기
        functions = read().rstrip()
        n = int(read())
        numbers = deque()
        tmp = read().rstrip()[1:-1]
        if tmp:
            numbers = deque(tmp.split(','))

        # 반복
        front, error = True, False
        for f in functions:
            # 방향 바꿔주기
            if f == 'R':
                if front:
                    front = False
                else:
                    front = True
            # 방향에 따라 pop
            elif f == 'D':
                if numbers:
                    if front:
                        numbers.popleft()
                    else:
                        numbers.pop()
                else:
                    error = True
                    break
        if not front:
            numbers.reverse()

        # 반복 결과
        if error:
            print('error')
        else:
            print('[' + ','.join(numbers) + ']')

solution()

profile
Swift, iOS 앱 개발을 공부하고 있습니다

0개의 댓글