성장일기

[python] 백준 5430 - AC 본문

알고리즘 문제

[python] 백준 5430 - AC

김몽몽 2022. 1. 8. 23:05

AC는 R(뒤집기), D(버리기) 연산이 있는 함수

첫째 줄에 테스트케이스의 개수,

다음 줄에는 수행할 함수,

배열의 개수,

배열에 들어있는 수가 주어진다.

연산을 수행한 후 결과를 출력하라

 

🧨 이 문제를 3시간은 넘게 잡고있었다.

단순해 보였는데 시간초과, 런타임에러 다양하게 겪었다.

ㅠㅠ,, 그래도 내 첫 골드문제!!

from collections import deque

n=int(input())  #테스트케이스의 수

for i in range(n):
    check=0  #R이 몇번 들어갔는지 체크하기 위하여 선언
    length=0  #길이
    error=False  #에러여부
    
    order=input().rstrip()  #연산 명령
    num=int(input().rstrip()) #배열 수
    case=input().rstrip() #배열
    
    case=case[1:-1] #[,] 없애기
    cases=case.split(',') #나누기
    case=deque(cases)
    
    if case[0]=='':
        length=0
    else:
        length=len(case)
    
    try:  #인덱스 에러가 계속 나서 그냥 try문 써버림
        for i in order:
            if i=='R':
                check+=1  #check이 홀수면 뒤에서부터 출력하기 위함
            elif i=='D':
                if length==0:
                    error=True
                    break
                elif check%2==0:
                    case.popleft()  #check이 짝수면 앞의 수 없애기
                else:
                    case.pop()  #check이 홀수면 뒤의 수 없애기
        if error==True:
            print('error')
        else:
            if check%2==0:
                string=','.join(list(case))
            else:
                case.reverse()
                string=','.join(list(case))
            print('['+string+']')
    except:
        print('error')

'알고리즘 문제' 카테고리의 다른 글

[python] 백준 13412 - 서로소 쌍  (0) 2022.01.08
실버 1 🎉  (0) 2022.01.08
[python] 백준 1037 - 약수  (0) 2022.01.07
[python] 백준 10610 - 30  (0) 2022.01.07
[python] 백준 1026 - 보물  (0) 2022.01.06