난이도 : D3
문제번호 : 1221
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
숫자 체계가 우리와 다른 어느 행성이 있다. 아래는 이 행성에서 사용하는 0 ~ 9의 값을 순서대로 나타낸 것이다. |
입력
입력 파일의 첫 번째 줄에는 테스트 케이스의 개수가 주어진다. |
출력
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 정렬된 문자열을 출력한다. |
예시
입력 | 출력 |
10 #1 7041 SVN FOR ZRO NIN FOR EGT EGT TWO FOR FIV FIV ONE SVN ONE ONE FIV TWO SVN SIX ONE FOR TWO THR TWO TWO ONE SIX EGT FIV SVN SIX ONE EGT NIN TWO SVN NIN FIV FOR THR ONE TWO THR THR FOR ONE ONE THR EGT SVN FOR TWO SVN SVN NIN THR ONE NIN EGT SIX FIV ZRO TWO EGT SIX ZRO TWO FOR EGT SIX FIV ZRO NIN ZRO ZRO SIX ONE THR EGT NIN THR FOR FOR SIX ZRO SIX SIX ONE... #2 7778 EGT ONE THR SIX ZRO ZRO NIN FIV FOR EGT SVN FOR NIN NIN EGT THR EGT FIV TWO ONE FIV THR ONE SIX SVN THR ZRO FIV TWO TWO ONE FIV ZRO TWO SIX TWO EGT THR SIX SVN FOR FIV THR SVN SVN EGT EGT FOR ZRO THR FIV EGT NIN THR ONE SVN ZRO NIN THR THR FIV SVN THR SIX FOR NIN FOR ZRO ZRO NIN SVN EGT SIX FIV TWO TWO THR FIV THR SVN NIN ONE ZRO FIV ZRO NIN THR SIX ... ... |
#1 ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ... #2 ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ZRO ... ... |
2. 문제풀이
정렬 문제입니다. 저는 이렇게 범위가 적은 문제의 경우는 카운팅정렬을 응용하여 O(N)으로 풀어버립니다. 딕셔너리를 이용하여(숫자라면 배열)각각의 개수를 카운팅 해준 후 키와 벨류를 가져와 벨류의 개수만큼 반복하여 출력하면 끝입니다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#D3 1221 GNS
T = int(input())
for t in range(1, T+1):
N = input()
#각 개수를 저장하는 딕셔너리
str_dict = {'ZRO': 0, 'ONE': 0, 'TWO': 0, 'THR': 0, 'FOR': 0, 'FIV': 0, 'SIX': 0, 'SVN': 0, 'EGT': 0, 'NIN': 0}
str_list = input().split()
result = ''
for s in str_list:
#각각 카운팅한다.
str_dict[s] += 1
#각 원소가 몇개인지 나오기때문에 앞에서부터 개수만큼 생성한다.
for key, value in str_dict.items():
temp = ' '.join([key] * value)
result += temp + ' '
print("#{}".format(t))
print(result[:len(result) - 1])
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
수의 새로운 연산 Python(SW Expert Academy) (0) | 2020.03.20 |
---|---|
암호생성기 Python(SW Expert Academy) (0) | 2020.03.19 |
Magnetic Python(SW Expert Academy) (0) | 2020.03.17 |
회문2 Python(SW Expert Academy) (0) | 2020.03.16 |
회문1 Python(SW Expert Academy) (0) | 2020.03.15 |
댓글