[Python] 백준 알고리즘 13417번 - 카드 문자열

2022. 5. 4. 21:46알고리즘/문제풀이

[Python] 백준 알고리즘 13417번 - 카드 문자열

문제 출처 : https://www.acmicpc.net/problem/13417

 

13417번: 카드 문자열

입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처

www.acmicpc.net

카드 문자열 문제

 

접근 방법

 문자를 입력받고 사전 순으로 가장 빠르게 정렬해야 하는 문제이다. 문자의 경우 처음에 하나의 집합으로 입력을 받고 나서 이제 그 문자들 사이에서 사전 순으로 왼쪽 혹은 오른쪽으로 정렬하는 부분이 문제가 요구하는 풀이인듯하다. 문자를 사전 순으로 비교해가면서 나열하는 것은 아스키코드를 떠올려서 해결하였다.

https://skyriv312079.tistory.com/23

 

ASCII Table - 아스키 코드표

ASCII Table - 아스키 코드표 백준의 문자열 문제들을 보다가 한번 쯤 정리가 필요할 듯 싶어 적게 되었다. 문자열의 문제들을 보면 문자열 데이터 형식을 유지하여 푸는 방법도 존재하지만 몇몇

skyriv312079.tistory.com

 사전순으로 앞선 문자는 아스키코드 상으로도 숫자가 비교 문자보다 작을 것이라 생각하였고 이를 토대로 풀이 코드를 작성하였다. 아스키코드를 이용하여 비교를 한 뒤 deque를 이용하여 각 문자를 문제에서 요구하는 좌, 우에 넣어주었고 추후에 word변수를 통해 print 하였다.

 

풀이 코드

from collections import deque

n = int(input())
for _ in range(n):

    time = int(input())

    S = list(map(str, input().split(" ")))
    word = ""

    queue = deque()
    queue.appendleft(S[0])

    for i in range(1, len(S)):
        if ord(S[i]) > ord(queue[0]):
            queue.append(S[i])
        else:
            queue.appendleft(S[i])

    for i in queue:
        word += i

    print(word)