흙금이네 블로그

[BOJ] 1083 - 소트 (Python) 본문

알고리즘

[BOJ] 1083 - 소트 (Python)

흙금 2023. 4. 17. 12:15

 

 

아이디어

 

선택 정렬처럼 교환할 원소를 찾고, 거품 정렬의 교환 방법처럼 원소를 교환하며 내림차순 정렬한다.

 

 

풀이

 

앞에서부터 차례로 교환할 수 있는 범위 내 가장 큰 수를 찾고, 해당 원소를 앞쪽으로 이동시킨다.

 

def solution():
    N = int(input())
    A = list(map(int, input().split()))
    S = int(input())
    cnt = S
    for i in range(N-1):
        max_val = A[i]
        max_idx = i
        for j in range(i+1, min(i+cnt+1, N)):
            if A[j] > max_val:
                max_val = A[j]
                max_idx = j
        if max_idx > i:
            for j in range(max_idx, i, -1):
                A[j-1], A[j] = A[j], A[j-1]
            cnt -= max_idx-i
            if cnt <= 0:
                break
    print(*A)

solution()

 

Comments