문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
풀이
해당 문제는 시간 초과를 내면 안되므로 O(nlogn)으로 풀면 된다. 파이썬 내장함수가 O(nlogn)이기에 사용했지만 에러가 떳다..
방법은 총 3가지이다.
첫번째 방법은 파이썬 내장함수 sorted를 사용하고 python3을 pypy3으로 바꾸는것.
두번째 방법은 input을 sys.stdin.readline()으로 받는 것.!
세번째 방법은 직접 merge Sort를 구현하는 것.!!
소스코드는 다음과 같다.
import sys
N=int(sys.stdin.readline())
N_list=[]
for i in range(N):
temp=int(sys.stdin.readline())
N_list.append(temp)
sort_N=sorted(N_list)
for i in sort_N:
print(i)
* merge sort로 다음에 풀어볼 생각
'Algorithm(알고리즘) > BOJ(백준) 문제풀이' 카테고리의 다른 글
백준 17521번 파이썬 | Byte Coin (0) | 2020.09.30 |
---|---|
백준 10989번 파이썬 | 수 정렬하기 3 | Sort (0) | 2020.09.28 |
백준 1920번 파이썬 | 수 찾기 | binary search(이분 탐색) (0) | 2020.09.26 |
백준 10994번 파이썬 | 별 찍기 -19 | 재귀함수 (1) | 2020.09.22 |
백준 1063번 파이썬 | 킹 | 시물레이션 (0) | 2020.09.18 |