[Baekjoon] 13417 카드 문자열 python

sorzzzzy·2021년 8월 5일
0

Baekjoon Algorithm

목록 보기
33/46
post-thumbnail

🏷 문제


💡 코드

from sys import stdin
from collections import deque

T = int(stdin.readline())
for _ in range(T):
    res_list = []
    N = int(stdin.readline())
    card_list = deque(stdin.readline().split())
    res_list.append(card_list.popleft())
    while card_list:
        tmp = card_list.popleft()
        if tmp > res_list[0]:
            res_list.append(tmp)
        else:
            res_list.insert(0,tmp)
    print(''.join(res_list))
  

🔑

입력받은 처음 수를 가운데 놓고 그 다음부터 왼쪽이나 오른쪽에 넣어야 한다는 문제 설명에만 신경을 썼다면 빠르게 풀리지 않았을 것 같다.

  • 일단 큐를 하나 만들어 입력받은 카드 값을 모두 넣어주고, 결과값을 저장할 리스트를 선언한다.
  • 첫번째 카드값은 비교대상이므로, 리스트 처음에 넣어주고 시작한다.
  • 큐에서 차례대로 pop을 하며 리스트의 제일 처음 값과 비교한다
    • 만약 리스트의 제일 처음 값보다 pop한 값이 크다면 리스트 맨 뒤에 넣어준다
    • 그게 아니라면 리스트 맨 처음에 넣어준다

👏🏻끝👏🏻

profile
Backend Developer

0개의 댓글