본문 바로가기

Algorithm

SWEA 4843 특별한 정렬 (python)

반응형

4843. [파이썬 S/W 문제해결 기본] 2일차 - 특별한 정렬 D3

 

[파이썬 S/W 문제해결 기본] 2일차

2021.04.21 - [Algorithm] - SWEA 4836 색칠하기 (python)

2021.04.19 - [Algorithm] - SWEA 4837 부분집합의 합 (python)

2021.04.21 - [Algorithm] - SWEA 4839 이진탐색 (python)

2021.04.21 - [Algorithm] - SWEA 4843 특별한 정렬 (python)

문제

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

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

코드

T = int(input())

# 먼저 버블소트를 이용해준다.
# 일반 정렬로 해결해도 됨 연습겸 정렬 진행
def bubble_sort(numbers):
    for i in range(len(numbers)-1,0,-1):
        for j in range(0,i):
            if numbers[j]>numbers[j+1]:
                numbers[j], numbers[j+1] = numbers[j+1], numbers[j]
    return numbers

for tc in range(1, T+1):
    N = int(input())
    numbers = list(map(int, input().split()))
    # 버블소트
    numbers = bubble_sort(numbers)
    result = []
    # 숫자 10개 니까 5까지 하면서 뒤에서 큰것하나 아래서 큰것하나 뽑아올 예정
    for i in range(5):
        # 정렬된 리스트의 맨마지막, 즉 가장 큰값 먼저 추출
        result.append(numbers[len(numbers)-1-i])
        # 다음으로 가장 작은값 추출
        result.append(numbers[i])
    # 공백으로 숫자 구분
    result = ' '.join(map(str, result))
    print("#{} {}".format(tc, result))
반응형

'Algorithm' 카테고리의 다른 글

SWEA 5208 전기버스2 (python)  (0) 2021.04.21
SWEA 4836 색칠하기 (python)  (0) 2021.04.21
SWEA 5207 이진탐색 (python)  (0) 2021.04.21
SWEA 4839 이진탐색 (python)  (0) 2021.04.21
BOJ 2217 로프 (python)  (0) 2021.04.20