Algorithm Study/Python

[백준 파이썬] #2430. AC

728x90
반응형

풀기 전 생각해보기😮


풀이🛫

from collections import deque

T = int(input())
for tc in range(1, T+1):
    p = list(input())
    n = int(input())
    inp = deque(input()[1:-1].split(','))
    err = False
    rcnt = 0
    for i in p:
        if i == 'R':
            rcnt += 1
        elif i == 'D':
            if len(inp) > 0 and inp != deque(['']):     # 여기서 문제가 발생
                if rcnt % 2 == 1:       # 홀수 번 뒤집기가 진행되었을 때
                    inp.pop()
                else:
                    inp.popleft()
            else:
                err = True
                break

    if err:
        print('error')
    else:
        if rcnt % 2 == 0:
            print('[' + ','.join(inp) + ']')
        else:
            inp = list(reversed(inp))
            print('[' + ','.join(inp) + ']')

 

핵심 정리🎁

  • reverse를 for문 안에서 진행하게 되면 시간복잡도가 O(n) * N이 되므로, 다른 방법을 찾아볼 것
  • deque([''])의 길이는 1이 되더라, 덱의 길이를 사용할 때 주의하자

링크💎

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

 

5430번: AC

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

www.acmicpc.net

 

 

 

'Algorithm Study > Python' 카테고리의 다른 글

[백준 파이썬] #14502. 연구소  (0) 2022.12.11
[백준 파이썬] #1406. 에디터  (0) 2022.12.10
[백준 파이썬] #10799. 쇠막대기  (0) 2022.12.08
[백준 파이썬] #2493. 탑  (0) 2022.12.08
[백준 파이썬] #2636. 치즈  (1) 2022.11.08