본문 바로가기
알고리즘/BOJ

[Python] 백준 1083: 소트

by PIAI 2021. 9. 25.

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

 

1083번: 소트

크기가 N인 배열 A가 있다. 배열에 있는 모든 수는 서로 다르다. 이 배열을 소트할 때, 연속된 두 개의 원소만 교환할 수 있다. 그리고, 교환은 많아봐야 S번 할 수 있다. 이때, 소트한 결과가 사전

www.acmicpc.net

1. 사전 반대 순이라는 말은 리스트를 큰 순서대로 나열하는 것이다.

2. 현재 인덱스를 기준으로 뒤에 가장 큰 값을 비교한다.

3. 남은 횟수가 더이상 없으면 종료한다.

 

S는 1000000보다 작거나 같은 음이 아닌 정수이다.라는 조건이 있는데 이 조건은 횟수가 0일 수도 있다는 것이다. 이것 때문에 틀렸다가 바로 정정했다.

n = int(input())
lst = list(map(int, input().split()))
s = int(input())

for i in range(n-1):
    maxx = lst[i]
    val = 0
    if s == 0:
        break
    for j in range(i+1, n):
        x = j-i
        if lst[j] > maxx:
            maxx = lst[j]
            val = x
        if x >= s:
            break
    if val:
        s -= val
        lst.remove(maxx)
        lst.insert(i, maxx)

for x in lst:
    print(x, end=' ')

댓글