알고리즘/백준
[백준] 1083 - 소트 (파이썬)
소갱
2022. 2. 21. 18:20
n = int(input())
array = list(map(int,input().split()))
s = int(input())
def findMaxIdx(start,end):
for i in range(start,end+1):
if max(array[start:end+1]) == array[i]:
return i
def changeIdx(maxIdx,targetIdx):
array[targetIdx:maxIdx+1] = [array[maxIdx]] + array[targetIdx:maxIdx]
return maxIdx-targetIdx
for i in range(n):
idx = findMaxIdx(i,i+s)
s -= changeIdx(idx,i)
if s == 0:
break
print(*array)
s의 값이 닿는 한에서 최댓값의 인덱스를 찾고 앞으로 보내는 방식으로 해결하였다.