T = int(input())

# 정렬용 알파벳
number_alpha = ["ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"]

for tc in range(1,1+T):

    n = list(map(str,input().split()))

    # 무작위 숫자 리스트
    number_list = list(map(str,input().split()))

    # 결과 저장용
    res = []

    for q in range(10):
        for w in number_list:
            if number_alpha[q] == w:
                res.append(w)

    print(n[0])
    print(*res)

그 외

문제 풀이를 위한 아이디어

 

1. 문자열의 최대 길이는 10,000이고, 숫자는 0 ~ 9 ( 10개 ), tc는 10개, 주어진 시간은 30초 이다.

10,000 * 10 * 10을 계산해도 1,000,000이기 때문에 시간은 충분하다고 판단해서 가장 먼저 떠오른 방법으로 해결

 

2. 효율적인 방법은 절대 아니다

 

글 올린 후에 생각한 다른 방법, 이게 조금 더 효율적이지 않을까?

T = int(input())

# 정렬용 알파벳
number_alpha = ["ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"]

for tc in range(1,1+T):

    n = list(map(str,input().split()))

    # 무작위 숫자 리스트
    number_list = list(map(str,input().split()))

    # 개수 체크용
    res = [0]*10

    for q in number_list:
        res[number_alpha.index(q)] += 1

    print(n[0])
    for w in range(10):
        print('{} '.format(number_alpha[w])*res[w])

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다