반응형
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 |