[백준/파이썬] 23882 - 알고리즘 수업 - 선택 정렬 2

문제출처

https://www.acmicpc.net/problem/23882

 

문제분석

선택정렬 개념 적용을 연습하기 위해 고른 문제다.

 

코드구현

import sys

input = sys.stdin.readline

n, k = map(int, input().split())
my_list = [x for x in map(int, input().split())]


def swap(my_list, k):
    for last in range(len(my_list) -1, 0, -1):
        my_max = my_list[last]
        max_idx = last
        for j in range(last -1, -1, -1):
            if my_max < my_list[j]:
                max_idx = j
                my_max = my_list[j]
        if last != max_idx:
            my_list[last], my_list[max_idx] = my_list[max_idx], my_list[last]
            k -= 1
        if k == 0:
            return 0
                


k = swap(my_list, k)

if k == 0:
    print(*my_list)
else:
    print(-1)

 

배운점

선택정렬을 구현했음에도 불구하고 틀렸다고 나왔다.

문제를 한번 더 읽어보니 교환 로직에 대해 문제에서 주어졌다. 

교환 로직을 다시 작성한 결과 문제통과를 했다.

문제를 끝까지 읽자.