본문 바로가기
BOJ

[python]백준 5430번 - AC

by yujinkimkim 2023. 8. 21.

5430번: AC (acmicpc.net)

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

 

import ast
import sys
from collections import deque

input = sys.stdin.readline

n = int(input())
for _ in range(n):
    arr = input()
    m = int(input())
    tmp = ast.literal_eval(input())
    arr2 = deque(tmp)

    flag = True
    reverse_count = 0
    for i in arr:
        if i == 'D':
            if len(arr2) == 0:
                flag = False
                break
            if reverse_count % 2 == 0:
                arr2.popleft()
            else:
                arr2.pop()
        elif i == 'R':
            reverse_count += 1

    if flag:
        if reverse_count % 2 == 1:
            arr2.reverse()
        ans = list(arr2)
        print("[",end="")
        print(*ans,sep=",",end="")
        print("]")
    else:
        print("error")

import ast
import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
for _ in range(n):
    arr = input()
    m = int(input())
    tmp = ast.literal_eval(input())
    arr2 = deque(tmp)

    flag = True
    for i in arr:
        if i == 'D':
            if len(arr2) == 0:
                flag = False
                break
            arr2.popleft()
        elif i == 'R':
            arr2.reverse()

    if flag:
        print(list(arr2))
    else:
        print("error")

시간초과 나온 코드입니당

import ast
import sys
from collections import deque

input = sys.stdin.readline

n = int(input())
for _ in range(n):
    arr = input()
    m = int(input())
    tmp = ast.literal_eval(input())
    arr2 = deque(tmp)

    flag = True
    reverse_count = 0
    for i in arr:
        if i == 'D':
            if len(arr2) == 0:
                flag = False
                break
            if reverse_count % 2 == 0:
                arr2.popleft()
            else:
                arr2.pop()
        elif i == 'R':
            reverse_count += 1

    if flag:
        if reverse_count % 2 == 1:
            arr2.reverse()
        ans = list(arr2)
        print("[",end="")
        print(*ans,sep=",",end="")
        print("]")
    else:
        print("error")

R이 나올 때마다 계속 reverse를 하는 부분이 문제였어요

 

R이 나올 때 변수에 1씩 더해서 홀수면 맨뒤 없애고 짝수면 맨앞 없애는 식으로 하고

마지막에 출력할때 홀수면 이때 reverse 해줬어요

이 문제 조심할게 출력내용 보면 배열 안에 요소들이 ,으로 따닥따닥 붙어있어서

배열 그냥 출력하면 안 되고 문자열로 따로 해줘야해요

ㅠ 잉죵

댓글