728x90
1377번: 버블 소트
첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다.
www.acmicpc.net
🤔 문제분석
버블 소트가 어떻게 동작되는지 잘 파악하고 있다면 그것을 응용하여 문제를 해결 할 수 있습니다. 문제에서 요구 하는 답은 정렬된 원소와 정렬되지 않는 원소를 비교하여 정렬된 값이 정렬이전의 값 대비 왼쪽으로 가장 많이 이동한 원소로 문제를 해결 할 수 있다. 현재 코드에서 가장 큰 값을 오른쪽으로 이동시키면서 정렬을 하고있기때문에, 왼쪽으로 이동한 횟수중에서 가장 큰 값이 정답이 될 수있다.
💻 코드
import sys
from copy import deepcopy
input = sys.stdin.readline
N = int(input())
arr = []
for i in range(N):
arr.append((int(input()), i))
new_arr = deepcopy(arr)
new_arr.sort()
ans = 0
for i in range(N):
ans = max(ans, new_arr[i][1] - arr[i][1])
print(ans+1)
🎯 피드백 및 개선사항
문제를 해결하지 못하여 인터넷에 정답을 참조하였습니다. 다음에 이러한 문제를 풀때에는 해당 유형의 기초 개념을 한번더 리마인드 한뒤에 접근 해야겠습니다 😊
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1253번 : 좋다 (1) | 2024.02.10 |
---|---|
[백준] 2109번 : 순회강연 (1) | 2024.02.05 |
[백준] 17140번 : 이차원 배열과 연산 (1) | 2024.02.04 |
[백준] 21609번 : 상어 초등학교 (0) | 2024.02.04 |
[백준] 10800번 : 킬러볼 (0) | 2024.02.04 |