상세 컨텐츠

본문 제목

프로그래밍_파이썬_백준_2750번_정렬_오름차순

알고리즘/백준 온라인

by 혁오 2021. 11. 27. 18:46

본문

BIG

안녕하세요. 오늘은 백준 온라인 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번 #최대공약수 #최소공배수

BIG

관련글 더보기