https://www.acmicpc.net/problem/5430
Algorithm
양쪽으로 빼기 위해서 덱을 사용하였다.R의 개수가 홀수일 경우에만 뒤집기를 수행, flag 값을 통해 R의 개수를 카운트하고 짝/홀 여부를 판정한다."[]"라고 입력을 받아도 deque의 길이는 1이 되기 때문에 길이가 0인 부분에 대해서는 예외사항으로 빈 큐로 초기화를 해줘야 한다.
'R'이면,flag 변수가 1씩 증가
'D'이면, 덱 q의 길이가 0인지 확인한다.
만약 q가 비어있으면 'error'를 출력하고 반복문을 중단한다.
그렇지 않으면, flag 변수의 값에 따라 덱의 오른쪽 끝(q.pop())
또는 왼쪽 끝(q.popleft())에서 요소를 제거한다.
만약 flag의 값이 홀수이면, 덱을 reverse() 메서드를 사용하여 뒤집고,마지막으로, 덱 q의 요소들을 쉼표로 구분하여 문자열로 합치고, 대괄호로 둘러싸여 있는 형식으로 출력한다.
전반적으로, 이 코드는 여러 개의 테스트 케이스를 입력으로 받고,주어진 쿼리에 따라
덱에 연산을 수행한 후 모든 연산이 적용된 후의 덱의 최종 상태를 출력한다.
Code
from collections import deque
T = int(input())
for tc in range(T):
query = input()
k = int(input())
q = deque(input()[1:-1].split(','))
flag = 0
if k == 0:
q = []
for c in query:
if c == 'R':
flag += 1
elif c == 'D':
if len(q) == 0:
print('error')
break
else:
if flag % 2 == 1:
q.pop()
else:
q.popleft()
else:
if flag % 2 == 1:
q.reverse()
print('[' + ','.join(q) + ']')
'Koala - 10기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[ 백준 / Python ] #1914 하노이의 탑 (0) | 2023.05.27 |
---|---|
[ 백준 / Python ] #9663 N-Queen (1) | 2023.05.26 |
[ 백준 / Python ] #1515 수 이어 쓰기 (0) | 2023.05.19 |
[백준 / Python] # 2812번 크게 만들기 (0) | 2023.05.13 |
[백준 / Python] #1124 언더프라임 (0) | 2023.05.12 |