For Programmer

백준 2750번 파이썬 문제풀이(정렬 - 수 정렬하기) 본문

코팅테스트/백준 문제 모음

백준 2750번 파이썬 문제풀이(정렬 - 수 정렬하기)

유지광이 2021. 10. 8. 16:28
728x90

코드1 (버블 정렬 이용)

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

for _ in range(n):
    array.append(int(input()))

# 버블 정렬
for i in range(len(array) - 1):
    for j in range(len(array) - 1):
        if array[j] > array[j + 1]: #만약 앞의 원소가 뒤의 원소보다 크다면
            array[j], array[j + 1] = array[j + 1], array[j] #두 개의 자리를 바꿔준다

for i in range(len(array)):
    print(array[i])

-> 가장 유명한 정렬 버블정렬이다. 

 

코드2(삽입 정렬 이용)

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

for _ in range(n):
    array.append(int(input()))


# 삽입 정렬
for i in range(1, len(array)):
    for j in range(i, 0, -1):  # 인덱스 i부터 1까지 1씩 감소하며 반복하는 문법
        if array[j] < array[j - 1]:  # 한 칸씩 왼쪽으로 이동
            array[j], array[j - 1] = array[j - 1], array[j]
        else:  # 앞쪽은 이미 정렬이 되어있기 때문에 자기보다 작은 데이터 만나면 그자리에서 멈춤
            break

for i in range(len(array)):
    print(array[i])

-> 버블정렬과다르게 각 인덱스마다 검사를 하되 인덱스(i)마다 맨앞의 인덱스(j)까지 비교하여 자리를 바꿔준다.  그러나 여기서 중요한점은 어차피 인덱스(i)가 1씩 증가할 때마다 앞에서 정렬을 다 하고 넘어가기 때문에 만약 이미 정렬이 되어 있다면 조건 else로 break를 걸어주는 것이다. 

 

 

728x90
Comments