안녕하세요. 오늘은 백준 온라인 2750번 정렬에 대해서 풀어볼겁니다!
이렇게 첫째줄에 개수를 입력하고, 그다음 수를 입력합니다
예시에는 개수는 총 5개이고,
숫자는 5, 2, 3, 4, 1을 입력하였습니다.
오름차순으로 정렬한다면 출력 예제처렴 1, 2, 3, 4, 5가 출력 돼야겠죠?
파이썬으로 구현해보았습니다.
N=int(input()) # 개수 입력 받기
num=0 # 정렬할 숫자들 입력
index=0 # 교환할때 사용
K= []
for i in range(0,N):
num = int(input()) # 숫자를 입력 받음 # 5 2 3 4 1로 가정 해보겠습니다.
K.append(num) # K 리스트에 num값을 추가 ->
# K=[5, 2, 3, 4, 1]
for j in range(1,N): # 1부터 N까지 반복
for k in range(j,N,1): # j부터 N까지 반복
if (K[j-1]>K[k]):
index=K[j-1]
K[j-1]=K[k]
K[k]=index
for k in range(N):
print(K[k])
이런식으로 구현을 해보았는데요, 가장 중요한 이중 반복문을 살펴보겠습니다
for j in range(1,N): # 1부터 N까지 반복
for k in range(j,N,1): # j부터 N까지 반복
if (K[j-1]>K[k]): # K[0] > K[1]
index=K[j-1]
K[j-1]=K[k]
K[k]=index
여길 보시면
이중 반복문의 의미는
우선 K가 5 2 3 4 1을 입력받았다고 가정 하면
K[0] ~ K[4] 까지 돌아갑니다. 이때
for k in range(j,N,1): # j부터 N까지 반복
이 구분을 보면
K[0] 부터 K[4] 까지 돌아가는데
K[0]일때는 비교를 K[1], K[2], K[3], K[4]를 비교한 후
if (K[j-1]>K[k]): # K[0] > K[1]
index=K[j-1]
K[j-1]=K[k]
K[k]=index
값을 바꿔주게됩니다.
K[1]일때는 K[2], K[3], K[4] 을 비교 하게 되고,
K[2]일때는 K[3], K[4] 와 비교하게 되는겁니다.
이런식으로 반복문이 모두 돌아 가고 탈출하게 되면
이런식으로 값이 나오게 됩니다.
제가 사용한 정렬은 버블정렬인데
코드는 되게 단순하지만 반복 횟수도 되게 많아서
빅데이터 같은 걸 정렬해야할 때는 잘 사용하지 않습니다.
다음시간에 선택정렬에 대해서 알아보겠습니다.
#알고리즘, #백준, #백준온라인, #파이썬, #C언어, #C, #자바, #JAVA, #python, #프로그래밍, #코딩, #파이썬수학, #파이썬알고리즘, #피보나치수열, #피보나치 #팩토리얼 #팩토리얼 구하기 #순열 #순열과 조합 #조합 #재귀함수 #재귀 #재귀알고리즘 #알고리즘재귀 #재귀함수원리 #2609번 #1805번 #2824번 #7806번 #최대공약수 #최소공배수
백준2108번 통계학 파이썬 풀이 (0) | 2022.01.04 |
---|---|
프로그래밍_파이썬_백준_10870번_피보나치수열 (1) | 2021.11.26 |
프로그래밍_파이썬_백준_10872번_팩토리얼_재귀함수 (0) | 2021.11.26 |
프로그래밍_파이썬_백준1712번_손익분기점 (0) | 2021.11.26 |