본문 바로가기
Develop/Python + SWEA

[SW Expert Academy] 4843. 특별한 정렬

by Tarra 2022. 2. 16.

4843. 특별한 정렬


문제)

보통의 정렬은 오름차순이나 내림차순으로 이루어지지만, 이번에는 특별한 정렬을 하려고 한다.

N개의 정수가 주어지면 가장 큰 수, 가장 작은 수, 2번째 큰 수, 2번째 작은 수 식으로 큰 수와 작은 수를 번갈아 정렬하는 방법이다.

예를 들어 1부터 10까지 10개의 숫자가 주어지면 다음과 같이 정렬한다.
 

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개까지 출력한다.

 

 

풀이)

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
= int(input())
for _ in range(T):
    n = int(input())
    li = list(map(int, input().split()))
 
    for i in range(0, n): # 거품 정렬
        for j in range(i + 1, n):
            if li[i] > li[j]:
                li[i], li[j] = li[j], li[i]
 
    s = 0
    e = n - 1
    answer = []
    while s < e:
        answer.append(str(li[e]))
        e -= 1
        answer.append(str(li[s]))
        s += 1
    print(f"#{_ + 1} {' '.join(answer[:10])}")
cs

 


문제 출처 : https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

※ SW Expert 아카데미는 원칙적으로 문제를 무단 복제하는 것을 금지합니다.

학습용으로 문제를 가져왔으나, 문제가 될 시 수정 및 삭제하겠습니다.