D3
Problem
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])
<부족한 부분은 댓글로 남겨주시면 저에게 도움이 됩니다!>
반응형
'Algorithm > SW Expert Academy Review' 카테고리의 다른 글
1961. 숫자 배열 회전 (0) | 2023.03.05 |
---|---|
4839. [파이썬 S/W 문제해결 기본] 2일차 - 이진탐색 (0) | 2023.03.05 |
1209. [S/W 문제해결 기본] 2일차 - Sum (0) | 2023.03.05 |
2001. 파리 퇴치 (0) | 2023.03.05 |
4836. [파이썬 S/W 문제해결 기본] 2일차 - 색칠하기 (0) | 2023.03.05 |