본문 바로가기
카테고리 없음

[백준 2750번] '케이원' 파이썬(python) 재귀 I 수 정렬하기

by MD.Kang 2021. 5. 17.

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

예제 입력 1

5

5

2

3

4

1

 

예제 출력 1

1

2

3

4

5

 

[ 버블정렬을 사용하여 정렬 ]

n = int(input())
list_1 = []
for i in range(n):
    list_1.append(int(input()))

# Bubble Sort
for i in range(len(list_1)):
    for j in range(len(list_1)):
        if list_1[i] < list_1[j]:
            list_1[i], list_1[j] = list_1[j], list_1[i]

for m in list_1:
    print(m)
    

 

[ 삽입정렬을 사용하여 정렬 ]

 

n = int(input())
m = []
for i in range(n):
    m.append(int(input()))

# Insert Sort
for i in range(1, len(m)):
    while (i>0) & (m[i] < m[i - 1]):
        m[i], m[i - 1] = m[i - 1], m[i]
        i -= 1

for n in m:
    print(n)
    

 

[ sorted 함수 사용 ]

n = int(input())
m = []
for i in range(n):
    m.append(int(input())) # m.append(num)이 아닌 num 대신 int(input())을 사용

m = sorted(m)
for i in range(len(m)):
    print(m[i])

 

[ set, add, sort 함수 사용 ]

n = int(input())
m = set()
for i in range(n):
    m.add(int(input()))

m = list(m)
m.sort()
for i in range(len(m)):
    print(m[i])

 

알았던 내용

 

 

몰랐던 내용

버블정렬은 아예 몰랐고, 삽입정렬은 여러모로 까먹었다. 연습을 안한 잘못이었다. 쉬운 문제였음에도 불구하고 보기좋게 틀렸다. 시간만 엄청나게 잡아먹어버렸다. 다시는 배운 것을 잊어버려 배움에 있어 시간 낭비하는 행동은 삼가도록하자. 

 

 

배운 내용

정렬하는 방법을 더욱 다양하게 알 수 있었다. 이후 다른 최적거리 문제 풀 때나 이와 유사한 거리 조정 최적화 코드 짜는데 큰 도움이 될거라 생각이 된다.