[코딩테스트][백준] 🔥 백준 5430번 "AC" 문제: Python으로 완벽 해결하기! 🔥

김상욱·2024년 10월 6일
0
post-thumbnail

문제 링크

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

🕒 Python 풀이시간: 20분

from collections import deque

t=int(input())

def func(opers,n,arr):
    flag=0
    for oper in opers:
        if oper=='D':
            if len(arr)==0:
                return 'error'
            if flag==0:
                arr.popleft()
            else:
                arr.pop()
        else:
            if flag==0:
                flag=1
            else:
                flag=0
    return list(arr) if flag==0 else list(arr)[::-1]
            

for _ in range(t):
    p=list(input())
    n=int(input())
    inputArr=input()[1:-1]
    arr=[]
    if len(inputArr)==0:
        arr=[]
    else:
        arr=list(inputArr.split(','))
    result=func(p,n,deque(arr))
    if result=='error':
        print(result)
    else:
        answer="["
        if len(result)>0:
            for k in result:
                answer+=k
                answer+=","
            answer=answer[:-1]+"]"
        else:
            answer+="]"
        print(answer)

문자열 조작 문제! 🔄✂️

간단하게 문자열을 가지고 뒤집기와 첫 글자 삭제를 하는 문제이다. 이 때, 첫 글자 삭제 연산과 뒤집기 연산을 슬라이싱으로 처리해버리니 시간초과가 나서 flag를 두어 뒤집혀 있을 때와 안뒤집혀 있을 때를 따로 두어서 deqeu에서 pop과 popleft를 두어 뒤집힌걸로 가정하고 제외해주었다. 그리고 만약 뒤집혔다면 마지막에서만 실제로 배열을 뒤집는 것을 처리해주었다.

이렇게 Python으로 백준의 "AC" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊

0개의 댓글