꾸준히 합시다

백준 파이썬 2750번: 수 정렬하기 본문

코딩 테스트 문제 풀이

백준 파이썬 2750번: 수 정렬하기

tturbo0824 2021. 3. 4. 16:09

www.acmicpc.net/problem/2750

 

2750번: 수 정렬하기

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

www.acmicpc.net

문제 유형: 구현, 정렬

 

# Solution 1

n = int(input())
a = []
for _ in range(n) : 
    a.append(int(input()))
    
a = list(set(a))
a.sort(reverse=False)
print(*a, sep='\n')

 

# Solution 2

import sys

n = int(input())
a = []
for _ in range(n) : 
    input = int(sys.stdin.readline())
    a.append(input)
a = list(set(a))
a.sort(reverse=False)

print(*a, sep='\n')

선택 정렬을 이용해 푸는 방법도 있겠지만 기본 정렬 라이브러리로 간단히 풀어 보았다. Solution 1, 2 모두 통과되었지만 역시 sys 모듈을 사용하니 처리 시간이 현저히 낮아졌다.

 

* O(nlogn)의 시간 복잡도를 지님

 

# Solution 3 - 선택 정렬

n = int(input())
array = []

for _ in range(n):
    array.append(int(input()))
    
for i in range(n):
    min_index = i
    for j in range(i + 1, n):
        if array[min_index] > array[j]:
            min_index = j
    array[i], array[min_index] = array[min_index], array[i]
    
print(*array, sep='\n')

* O(n^2)의 시간 복잡도를 지님

Comments