Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- heap
- 게리멘더링2
- C/C++ 구현
- ㅣ풀이
- 스택의 특징
- 백준
- 시간 복잡도
- 원판 돌리기
- dfs
- qorwns
- 백준 17471
- 백준 1158
- 자료구조
- 구현
- 5397
- 백준 5397
- 백준 1406
- 풀이
- Stack 이란
- 버킷 정렬
- 백준 2447
- 백준 17779
- 해시구현
- AVL 시간 복잡도
- 별 찍기 10
- c#
- 백준 17822
- 조세퍼스 순열
- 1764
- 해시 구현
Archives
- Today
- Total
홍시홍의 프로그래밍
[백준 2751] 수 정렬하기 2 with 파이썬 본문
요구사항
수의 개수가 1 ≤ N ≤ 1,000,000개 일 때, 정렬하기
참고
퀵 정렬 구현하여 문제 풀이를 진행하였다.
퀵 정렬은 피벗을 기준으로 왼쪽에는 작은 값 오른족에는 큰 값을 오게 만들어 재귀를 통해 정렬하는 것이다
풀이
import sys
arr=[]
n=int(input())
for i in range(n):
arr.append(int(sys.stdin.readline().rstrip()))
def QuickSort(left, right, arr):
#left 가 클 경우 종료
if(left>=right):
return
i = left
j = right
pivot = arr[(left+right)//2]
#i, j가 교차 하면 종료
while(i<=j):
#i가 작은 거라면 통과 아니라면 멈춘다 -> 교환해야함
while(arr[i] <pivot):
i+=1
#j가 큰 거라면 통과 아니라면 멈춘다 -> 교환해야함
while(arr[j] >pivot):
j-=1
if(i<=j):
temp=arr[i]
arr[i]=arr[j]
arr[j]=temp
i+=1
j-=1
QuickSort(left,j,arr)
QuickSort(i,right,arr)
QuickSort(0, n - 1, arr)
for i in range(n):
print(arr[i])
풀이(파이썬 스럽게)
import sys
arr=[]
n=int(input())
#한 줄에 1개 있는 int값 입력 받고
arr= [int(sys.stdin.readline()) for i in range(n)]
#리스트를 정렬한 것을 int->str로 바꾸어 조인으로 char으로 바꾼다
sys.stdout.write("\n".join(map(str, sorted(arr))))
'파이썬' 카테고리의 다른 글
[백준 11650] 좌표 정렬하기 3 with 파이썬 (0) | 2020.09.16 |
---|---|
[백준 10989] 수 정렬하기 3 with 파이썬 (0) | 2020.09.15 |
[백준 2902] KMP는 왜 KMP일까? (파이썬) (0) | 2020.08.31 |
[백준 1546] 평균(파이썬) (0) | 2020.08.19 |
[백준 3052] 나머지(파이썬) (0) | 2020.08.19 |
Comments