알고리즘

백준 알고리즘(파이썬) - 2750번 / 선택정렬

joy_lee 2021. 8. 25. 17:06

수 정렬하기

https://www.acmicpc.net/problem/2750

 

2750번: 수 정렬하기

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

www.acmicpc.net

힌트에 

시간 복잡도가 O(n²)인 정렬 알고리즘으로 풀 수 있습니다. 예를 들면 삽입 정렬, 거품 정렬 등이 있습니다.

라고 적혀있어서 내가 알고있는 선택정렬으로 코드를 작성했다.

선택정렬 방법은 아래와 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
= int(input())
numbers = []
for _ in range(N):
    numbers.append(int(input()))
print(numbers)
for i in range(N):
    for j in range(i+1, N):
        if numbers[i] > numbers[j]:
            change = numbers[i]
            numbers[i] = numbers[j]
            numbers[j] = change
print(numbers)
cs

앞의 수가 뒤의 수보다 작을 경우만 바꿔주면 된다.