from collections import deque
for _ in range(int(input())):
n = int(input())
s = input().split()
dq = deque(s)
res = deque(dq.popleft())
while dq:
now = dq.popleft()
if now > res[0]:
res.append(now)
else:
res.appendleft(now)
print("".join(res))
- A가 대문자 중 가장 작은 문자라고 한다면 현재 문자와 앞에 제일 앞에 담겨있는 문자 중 더 큰 값은 뒤로 보내고 현재 res 안에 제일 작은 문자는 제일 앞으로 보낸다.
- 두 개의 덱 자료구조를 쓰는 이유는 간단하다.(둘 다 모두 덱으로 진행해야 한다. 리스트의 경우엔 popleft, appendleft 사용 불가!)
- 해당 자료를 빼야 할 덱의 경우는 popleft를 해주기 위함이다.
- 해당 자료를 빼서 맞는 자리로 넣어 결과값으로 출력해줄 res의 경우엔 해당 res[0] 맨 앞에 있는 값보다 현재 비교하는 값이 작을 때 appendleft() 해주어야 하기 때문이다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][파이썬] - 2480. 주사위 세개(파이썬/python) (0) | 2022.07.20 |
---|---|
[백준][파이썬] - 14425. 문자열 집합(파이썬/python) (0) | 2022.07.20 |
[백준][스택] - 1935. 후위 표기식2(파이썬) (0) | 2022.07.17 |
[백준][스택] - 1918. 후위 표기식(파이썬) (0) | 2022.07.17 |
[백준][스택] - 10799. 쇠막대기(파이썬) (0) | 2022.07.17 |