For Programmer
백준 2750번 파이썬 문제풀이(정렬 - 수 정렬하기) 본문
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
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 10989번 파이썬 문제풀이(정렬 - 수 정렬하기3) (0) | 2021.10.08 |
---|---|
백준 2751번 파이썬 문제풀이(정렬 - 수 정렬하기2) (0) | 2021.10.08 |
백준 1436번 파이썬 문제풀이(브루트 포스- 영화감독 숌) (0) | 2021.10.07 |
백준 1018번 파이썬 문제풀이(브루트 포스- 체스판 다시 칠하기) (0) | 2021.10.07 |
백준 7568번 파이썬 문제풀이(브루트 포스- 덩치) (0) | 2021.10.06 |
Comments