문제출처
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)
배운점
선택정렬을 구현했음에도 불구하고 틀렸다고 나왔다.
문제를 한번 더 읽어보니 교환 로직에 대해 문제에서 주어졌다.
교환 로직을 다시 작성한 결과 문제통과를 했다.
문제를 끝까지 읽자.