10 1 9 2 8 3 7 4 6 5
인덱스 짝수인 것은 큰 숫자부터 내림차순,
홀수 인 것은 작은 숫자부터 오름차순 정렬하는 문제이다.
리스트에 새로 담아주는 방법말고, 말그대로 정렬을 해야한다!
T=int(input())
for tc in range(1,T+1):
n=int(input())
arr=list(map(int,input().split()))
for i in range(n):
if i%2==0: #짝수 (내림차순 정렬해야함)
max_v=arr[i]
for j in range(i,n):
if arr[j]>max_v:
max_v=arr[j]
arr[i],arr[j]=arr[j],arr[i]
else:
min_v=arr[i]
for j in range(i,n):
if arr[j]<min_v:
min_v=arr[j]
arr[i],arr[j]=arr[j],arr[i]
print(f'#{tc}',end=' ')
print(*arr[:10])
짝수 홀수 나누었다.
인덱스 첫번째부터 반복문을 돌린다. 인덱스가 짝수일 경우에는 첫번째 인덱스 값을 최대값으로 두고, 이후 검색하며 더 큰 값을 만나면 최대값을 바꿔주고 위치를 바꾼다.
이런 방식으로 하게되면 계속해서 큰 값을 첫번째 인덱스 자리에 넣어주게 되고 검색 범위에서 가장 큰 값이 오게된다.
검색범위는 시작 인덱스부터 해야 한다. 이미 정렬한 것은 끝! 더 많은 범위에서 큰 값을 찾은 결과이기 때문에 볼 필요가 없다. 나머지 중에 가장 큰 값을 또 다시 찾는 방식이다.
홀수 인덱스는 반대로 최저값을 찾아서 교환한다.
만들어진 배열 앞 10개만 출력하기 때문에 스플라이싱을 이용했다.
print(*arr) 리스트 요소 나열 표현법 기억하기!
'Algorithm > SWEA' 카테고리의 다른 글
4864. [파이썬 S/W 문제해결 기본] 3일차 - 문자열 비교 (0) | 2022.10.08 |
---|---|
4837. [파이썬 S/W 문제해결 기본] 2일차 - 부분집합의 합 (0) | 2022.10.05 |
4831. [파이썬 S/W 문제해결 기본] 1일차 - 전기버스 (0) | 2022.10.05 |
파이썬, 자바 : SWEA 1946. 간단한 압축 풀기 (0) | 2022.07.05 |
파이썬, 자바 : SWEA 1989. 초심자의 회문 검사 (0) | 2022.07.05 |