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

D3

Problem

SW Expert Academy 특별한 정렬

 

SW Expert Academy

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

swexpertacademy.com


Solution

1. 홀수와 짝수일 때를 구분하여 과정을 세운다.
  - 홀수
    - Bubble 정렬과 같은 방법으로 첫 번째를 기준으로 그 뒤에 있는 숫자들 중 가장 작은 값과 자리를 바꾼다.
    - 이 과정을 첫 번째 숫자부터 마지막 이전 숫자까지 반복하면 오름차순으로 정렬이 가능하다.
  - 짝수
    - 홀수와 같은 방식이지만, 내림차순으로 정렬해야하므로 최솟값 대신 최댓값을 찾아 자리를 교환한다.

Code

for test_case in range(1, int(input())+1):
    N = int(input())
    arr = list(map(int,input().split()))
 
    for i in range(N):
        min_Idx = max_Idx = i
        # 홀수 = 최소
        if i % 2:
            for j in range(i + 1, N):
                if arr[min_Idx] > arr[j]:
                    min_Idx = j
            # 위치 바꾸기
            arr[i], arr[min_Idx] = arr[min_Idx], arr[i]
        # 짝수 = 최대
        else:
            for j in range(i + 1, N):
                if arr[max_Idx] < arr[j]:
                    max_Idx = j
            # 위치바꾸기
            arr[i], arr[max_Idx] = arr[max_Idx], arr[i]
    print(f'#{test_case}', *arr[:10])


<부족한 부분은 댓글로 남겨주시면 저에게 도움이 됩니다!>

반응형