알고리즘/sw

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

HAN_PY 2020. 3. 27. 23:44
반응형

문제의 저작권은 SW Expert Academy에 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TC = int(input())
for tc in range(1, TC+1):
    print('#%d'%tc, end = "")
    n = int(input())
    data = list(map(int, input().split()))
    for i in range(n-1):
        q = i
        if not i%2:
            for j1 in range(i+1, n):
                if data[q] < data[j1]:
                    q= j1
        else:
            for j2 in range(i+1, n):
                if data[q] > data[j2]:
                    q= j2
        data[i], data[q] = data[q], data[i]
    for k in range(10):
        print(' %d' % data[k], end="")
    print()
cs

프린터를 하나하나씩 한다는 점에서 생소할 수 있다.

간단히 풀어서 이야기 하면 문제에서 요구하는 것 처럼

짝수 홀 수 나눠서 최대값과 최소값을 하나씩 뽑아서 index 0번 부터 차례대로 자리를 바꿔주는 것이다.

반응형