Skip to content

Commit 98f37db

Browse files
committed
67차 1번 문제풀이
1 parent 995e5f8 commit 98f37db

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed

live6/test67/문제1/김진용.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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)

live6/test67/문제2/김진용.py

Whitespace-only changes.

live6/test67/문제3/김진용.py

Whitespace-only changes.

0 commit comments

Comments
 (0)