https://www.acmicpc.net/problem/11004
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
n, k = map(int, input().split())
a = list(map(int, input().split()))
def quicksort(s, e, k):
global a
if s < e:
pivot = partions(s, e)
if pivot == k:
return
elif k < pivot:
quicksort(s, pivot -1, k)
else:
quicksort(pivot+1, e, k)
def swap(i, j):
global a
temp = a[i]
a[i] = a[j]
a[j] = temp
def partions(s, e):
global a
if s+1 == e:
if a[s] > a[e]:
swap(s,e)
return e
m = (s+e)//2
swap(s, m)
pivot = a[s]
i = s+1
j = e
while i<=j:
while pivot < a[j] and j>0:
j-=1
while pivot > a[i] and i< len(a)-1:
i +=1
if i<=j:
swap(i, j)
i += 1
j -= 1
a[s] = a[j]
a[j] = pivot
return j
quicksort(0, n-1, k-1)
print(a[k-1])
|
cs |
'백준' 카테고리의 다른 글
백준 1517번: 버블 소트 (0) | 2023.02.09 |
---|---|
백준 13023번: ABCDE (0) | 2023.02.09 |
백준 1427번: 소트인사이드 (0) | 2023.02.05 |
백준 1377번: 버블 소트 (0) | 2023.02.04 |
백준 2750번: 수 정렬하기 (1) | 2023.02.04 |