본문 바로가기
코딩 테스트/do it! 알고리즘 코딩테스트

016 버블 소트

by ornni 2024. 4. 25.
728x90
반응형

첫 번째 코드

 

머릿속에는 버블을 사용하자!! (버블버블 머리속이 아주 부글부글...)

 

그래서 버블을 사용해서 정렬은 다 했는데....응?

그 얼마나 루프를 돌렸는지는 어떻게 알징....

 

이 부분에서 책을 참고했다!

돌린 루프 = 변하기 이전의 인덱스 - 변한 후의 인덱스 + 1

이렇게 생각하면 되는데, 이렇게 글로만 써두고 외우면 나중에 뭔 소리지 할 수 있으니까

나중에도 빠른 이해를 위해 그림을 남겨두자!

 

import sys
input = sys.stdin.readline

n = int(input())
A =[]

for i in range(n):
    A.append((int(input()), i))

for i in range(n-1):
    for j in range(n-i-1):
        if A[j] > A[j+1]:
            temp = A[j]
            A[j] = A[j+1]
            A[j+1] = temp

max = 0

for i in range(n):
    if max < A[i][1] - i:
        max = A[i][1] - i

print(max + 1)

 

근데 님... 시간초과잖아요;;;


두번째 코드

 

버블정렬은 두 개의 루프가 돌아가 시간이 오래 걸리는 방법이다...

그래서 시간 초과가 났다

머릿속이 괜히 어렵게 푼 탓일까...

그래도 버블 함수 한번이라도 더 만들어봤으니까!! 로 만족하자

 

그리고 정렬을 위해서 sort 함수를 사용한다.

 

import sys
input = sys.stdin.readline

n = int(input())
A =[]

for i in range(n):
    A.append((int(input()), i))

A.sort()

max = 0

for i in range(n):
    if max < A[i][1] - i:
        max = A[i][1] - i

print(max + 1)

 

계속 A = A.sort()를 사용하는데;; 이 결과값은 None이다...

A.sort()를 해야지 A 리스트가 정렬된다!

 

통과!

 

버블 정렬은 범위 이해를 명확히 하면 비교적 쉽게 이해하는 것 같다!

기부니가 좋다 :)


링크

https://github.com/ornni/programmers/tree/main/%EB%B0%B1%EC%A4%80/Gold/1377.%E2%80%85%EB%B2%84%EB%B8%94%E2%80%85%EC%86%8C%ED%8A%B8

 

programmers/백준/Gold/1377. 버블 소트 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글

017 소트인사이드  (0) 2024.04.30
015 수 정렬하기  (0) 2024.04.25
014 절댓값 힙  (0) 2024.04.22
013 카드2  (0) 2024.04.22
011 스택 수열  (0) 2024.04.18