https://www.acmicpc.net/problem/13417
from collections import deque
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n = int(input())
cards = list(map(str, input().split()))
que = deque(cards[0])
word = cards[0]
for i in range(1, n):
if word >= cards[i]: # word가 더 뒷 순서
que.appendleft(cards[i])
word = cards[i] # 비교해줄 단어 , 제일 왼쪽에 위치
else:
que.append(cards[i])
print(''.join(que))
- 처음 비교해줄 기준 문자 (가장 왼쪽에 위치)를 que에 넣고 하나씩 비교해준다.
- 기준 문자가 다음에 나오는 문자 카드보다 뒤에 위치한다면 (첫번째 if문) appendleft() 함수를 이용해 기준 문자 왼쪽에 추가한다.
- 기준 문자가 다음에 나오는 문자 카드보다 앞에 위치한다면, append()함수로 오른쪽에 추가한다.
- 이때 deque에 있는 appendleft, append함수를 써주기 위해 deque를 선언해주었다.
- appendleft: 왼쪽 끝에 새로운 원소 삽입
- append: 오른쪽 끝에 새로운 원소 삽입
- pop: 오른쪽 끝의 원소를 제거 후 반환
- popleft: 왼쪽 끝의 원소를 제거 후 반환
- join 함수를 이용해 문자열을 합쳐주었다.
- '문자열을 이어주는 문자'.join(리스트)
'Algorithm > Problems' 카테고리의 다른 글
99클럽 코테 스터디 17일차 TIL + 그리디 (2) | 2024.11.14 |
---|---|
99클럽 코테 스터디 16일차 TIL + 그리디 (1) | 2024.11.13 |
99클럽 코테 스터디 14일차 TIL + 그리디 (0) | 2024.11.11 |
99클럽 코테 스터디 13일차 TIL + 그리디 (2) | 2024.11.10 |
99클럽 코테 스터디 12일차 TIL + BFS (0) | 2024.11.09 |