난이도 : D3
문제번호 : 4843
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
보통의 정렬은 오름차순이나 내림차순으로 이루어지지만, 이번에는 특별한 정렬을 하려고 한다. 10 1 9 2 8 3 7 4 6 5 주어진 숫자에 대해 특별한 정렬을 한 결과를 10개까지 출력하시오
|
입력
첫 줄에 테스트 케이스 개수 T가 주어진다. 1<=T<=50 다음 줄에 정수의 개수 N이 주어지고 다음 줄에 N개의 정수 ai가 주어진다. 10<=N<=100, 1<=ai<=100 |
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 특별히 정렬된 숫자를 10개까지 출력한다. |
예시
입력 | 출력 |
3 |
#1 10 1 9 2 8 3 7 4 6 5 #2 89 8 85 11 67 16 60 28 49 39 #3 98 3 97 9 88 17 75 18 71 21 |
2. 문제풀이
파이썬 2일차 연습문제중 마지막 문제였다. 특별한 정렬이라고 하여 현재 선택할수 있는 제일 큰 수와 제일 작은 수를 번갈아 가며 놓는 방식이다. 다른 언어였다면 정렬을 따로 구현하거나 라이브러리를 가져와여 사용해야 하지만 파이썬은 기본적으로 지원하는 정렬을 이용하여 쉽게 풀수 있었다. 한번 정렬을 하게되면 오름차순 혹은 내림차순으로 정렬이 되는데 제일앞과 뒤를 번갈아가며 출력을 하면 큰수와 작은수가 나오게 된다. 라이브러리를 이용하면 D1급이라고 생각이 되며, 정렬을 직접 구현해야 D3급은 되지 않나 라고 생각한다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#D3 4843 특별한 정렬
T = int(input())
for t in range(1, T+1):
abc = input()
num_list = list(map(int, input().split()))
num_list.sort()
result = []
count = 0
while count<10:
if count & 1:
result.append(num_list.pop(0))
else:
result.append(num_list.pop())
count+=1
print("#{} ".format(t), end='')
print(*result)
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
문자열 비교 Python(SW Expert Academy) (0) | 2020.03.03 |
---|---|
회문 Python(SW Expert Academy) (0) | 2020.03.02 |
이진탐색 Python(SW Expert Academy) (0) | 2020.02.29 |
부분 집합의 합 Python(SW Expert Academy) (0) | 2020.02.28 |
색칠하기 Python(SW Expert Academy) (0) | 2020.02.27 |
댓글