본문 바로가기

알고리즘/백준

[백준] 1377번 : 버블소트

728x90

1377번: 버블 소트

 

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