[파이썬][백준 2750번] 수 정렬하기
1. 문제Permalink
[Bronze I] 수 정렬하기 - 2750Permalink
성능 요약Permalink
메모리: 30840 KB, 시간: 256 ms
분류Permalink
구현(implementation), 정렬(sorting)
문제 설명Permalink
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력Permalink
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력Permalink
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
출처: 백준, https://https://www.acmicpc.net/
2. 해결방법 시간복잡도Permalink
- 단순 코딩 O(N^2)
- 더 쉽게 O(NlogN)
3. 문제 해결 및 코드Permalink
# O(n^2)으로 푼 경우 | |
T = int(input()) | |
test = [] | |
for i in range(T): | |
N = int(input()) | |
test.append(N) | |
n = len(test) | |
for j in range(n): | |
for h in range(j+1, n): | |
if test[j] > test[h]: | |
test[j], test[h] = test[h], test[j] | |
for k in test: | |
print(k) |
-
주석을 참고하면서 이해를 돕습니다.Permalink
4. 알고리즘 및 해설Permalink
- 단순 반복문으로 해당 문제를 정렬하여 해결하였다.
- 반복문 2개를 통해 해당 위치 값과 다음 위치 값을 비교하여 만약 현재 위치값이 다음 위치값보다 큰 경우 서로 위치를 바꿔주는 형식이다.
- 이는 문제에서 오름차로 정렬이라는 조건에 맞게 한 것이다.
- 반복문을 통해 해당 값들이 모두 바뀌었다면 반복문을 통해 한줄씩 출력해준다.
5. 더 쉽게Permalink
N = int(input())
lst = []
for i in range(N): lst.append(int(input()))
for i in sorted(lst): print(i)
- sorted()를 쓰면 정렬을 좀 더 간편하게 사용할 수 있다.