문제는 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)
'Baekjoon' 카테고리의 다른 글
[정수론] GCD(n, k)=1 (백준 11689) (0) | 2024.09.09 |
---|---|
[DP] 포도주 시식 (백준 2156) (0) | 2024.08.25 |
[스택, 큐] 오큰수 구하기 (백준 17298) (0) | 2024.08.25 |
[슬라이딩 윈도우] 최솟값 찾기 (백준 11003) (0) | 2024.08.25 |