File tree Expand file tree Collapse file tree 3 files changed +50
-0
lines changed
Expand file tree Collapse file tree 3 files changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ def merge_sort (A , p , r ): # A[p~r]을 오름차순 정렬.
2+ if p < r :
3+ q = (p + r ) // 2 # q는 p, r의 중간 지점
4+ merge_sort (A , p , q ) # 전반부 정렬
5+ merge_sort (A , q + 1 , r ) # 후반부 정렬
6+ merge (A , p , q , r ) # 병합
7+
8+ # A[p~q]와 A[(q+1) ~ r] 을 병합해 A[p~r]을 오름차순 정렬된 상태로 만든다.
9+ # A[p~q]와 A[(q+1) ~ r]은 이미 오름차순으로 정렬되어 있다.
10+ def merge (A , p , q , r ):
11+ global cnt , res
12+ i = p
13+ j = q + 1
14+ tmp = []
15+
16+ while i <= q and j <= r :
17+ if A [i ] <= A [j ]:
18+ tmp .append (A [i ])
19+ i += 1
20+ else :
21+ tmp .append (A [j ])
22+ j += 1
23+
24+ while i <= q : # 왼쪽 배열 부분이 남은 경우
25+ tmp .append (A [i ])
26+ i += 1
27+
28+ while j <= r : # 오른쪽 배열 부분이 남은 경우
29+ tmp .append (A [j ])
30+ j += 1
31+
32+ i = p
33+ t = 0
34+
35+ while i <= r : # A[p~r]에 저장
36+ A [i ] = tmp [t ]
37+ cnt += 1
38+ if cnt == K :
39+ res = A [i ]
40+ break ;
41+ i += 1
42+ t += 1
43+
44+ N , K = map (int , input ().split ())
45+ A = list (map (int , input ().split ()))
46+
47+ cnt = 0
48+ res = - 1
49+ merge_sort (A , 0 , N - 1 )
50+ print (res )
You can’t perform that action at this time.
0 commit comments