![[백준 1377번] 버블 소트](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcruIZA%2FbtsMdjZfdMr%2FV7qNtecIujKvsZaNBSTg40%2Fimg.png)
[백준 1377번] 버블 소트백준2025. 2. 5. 22:39
Table of Contents
728x90
[백준 1377번] 버블 소트
- 문제 링크 : 수 찾기
- 난이도 : 골드 2
- 풀이 날짜 : 2025-02-05
📖 문제 설명
버블 소트 알고리즘을 다음과 같이 C++로 작성했다.
bool changed = false;
for (int i=1; i<=N+1; i++) {
changed = false;
for (int j=1; j<=N-i; j++) {
if (A[j] > A[j+1]) {
changed = true;
swap(A[j], A[j+1]);
}
}
if (changed == false) {
cout << i << '\n';
break;
}
}
위 소스에서 N은 배열의 크기이고, A는 정렬해야 하는 배열이다. 배열은 A[1]부터 사용한다.
위와 같은 소스를 실행시켰을 때, 어떤 값이 출력되는지 구해보자.
📌 입력
첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다.
📌 출력
정답을 출력한다.
⌨️ 예제 입출력
입력
5
10
1
5
2
3
출력
3
📝 풀이 코드
from collections import defaultdict, deque
from queue import PriorityQueue
import sys
input = sys.stdin.readline
N = int(input())
numbers = []
for i in range(N):
numbers.append((int(input()),i))
s_numbers = sorted(numbers)
max_move = 0
for i in range(N):
origin_index = s_numbers[i][1]
max_move = max(max_move, origin_index - i)
print(max_move+1)
🔍 코드 설명
- 원본 리스트와 정렬 후 리스트의 인덱스들의 차이를 이용해 풀 수 있다.
'백준' 카테고리의 다른 글
[백준 11004번] K번째 수 (0) | 2025.02.07 |
---|---|
[백준 1427번] 소트인사이드 (0) | 2025.02.05 |
[백준 2750번] 수 정렬하기 (0) | 2025.02.05 |
[백준 11286번] 절댓값 힙 (0) | 2025.02.05 |
[백준 2164번] 카드2 (0) | 2025.02.05 |
@mane Lab :: 마네의 연구소
배움에 즐거움을 느끼는 마네의 연구소입니다. 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!