본문 바로가기

공부하는 것들/알고리즘

백준 13417번: 카드 문자열(그리디)

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

 

13417번: 카드 문자열

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

www.acmicpc.net

 

 

import sys

def solve(cards):
    dict_alphabet = {chr(i):i for i in range(65,65+27)}
    reverse_alphabet = {i:chr(i) for i in range(65,65+27)}
    cards_int = [dict_alphabet[c] for c in cards]
    arange = []
    for card in cards_int:
        if arange==[]: arange.append(card)
        elif card <= arange[0]: arange.insert(0,card)
        else: arange.insert(len(arange),card)
    arange_chr = [reverse_alphabet[c] for c in arange]
    return ''.join(arange_chr)
        


if __name__=='__main__':
    T = int(input())
    answers = []
    for _ in range(T):
        L = int(input())
        cards = list(map(str, sys.stdin.readline().split()))
        ans = solve(cards)
        answers.append(ans)
    for ans in answers:
        print(ans)