Baekjoon
[버블 정렬] 버블 소트 (백준 1377)
sweetpotato7
2024. 8. 25. 15:54
문제는 C++언어로 작성되었지만 해석해보면 버블정렬 할 때 이중 for문을 돌게 되는데 안쪽 for문에서 순서 변화가 안생기는 루프가 몇번 째인지 출력하는 문제다.
즉, 몇 번 for문을 돌면 제대로 정렬이 되는 건지 묻는 문제다.
풀이 과정을 봤는데 두 가지가 잘 이해가 안됐다.
(1) 왜 index의 차이의 최대값으로 몇 번 돌았는지를 알 수 있는가
(2) 왜 (sort 전 index) - (sort 후 index) 가 되어야 하는 가
(소스코드)
import sys
input = sys.stdin.readline
N = int(input())
A = list(enumerate([int(input()) for _ in range(N)]))
sorted_A = sorted(A, key=lambda x:x[1])
ans = 0
for i in range(N):
ans = max(ans, sorted_A[i][0]-i)
print(ans+1)