[PS] BOJ 23969 / 알고리즘 수업 - 버블 정렬 2

[PS] BOJ 23969 / 알고리즘 수업 - 버블 정렬 2
문제 링크: https://www.acmicpc.net/problem/23969
Thumbnail: Photo by Soop Kim / Unsplash

버블 정렬 알고리즘을 이해한다면 쉽게 풀이할 수 있습니다.

풀이

​버블 정렬 알고리즘의 의사 코드는 문제에서 보여주니, 이를 적절히 구현하면 됩니다. 이후, 배열 내 두 수의 교환이 일어날 때 마다 교환 횟수를 세어 K에 도달할 때 버블 정렬을 종료하고 배열의 상태를 출력해주면 됩니다.

코드

from sys import stdin
N, K = map(int, stdin.readline().split())
A = list(map(int, stdin.readline().split()))

cnt = 0
for last in range(N-1, 0, -1):
    for i in range(last):
        if A[i] > A[i+1]:
            A[i], A[i+1] = A[i+1], A[i]
            cnt += 1
        if cnt == K:
            break
    if cnt == K:
        break

if cnt < K:
    print(-1)
else:
    print(" ".join(map(str, A)))

solution.py