반응형
# Problem
수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 N(1 ≤ N ≤ 5,000,000)과 K (1 ≤ K ≤ N)이 주어진다. 둘째에는 A1, A2, ..., AN이 주어진다. (-109 ≤ Ai ≤ 109) 출력A를 정렬했을 때, 앞에서부터 K번째 있는 수를 출력한다. |
# My Answer
n,k = map(int,input().split())
result = list(map(int,input().split()))
result.sort()
print(result[k-1])
# Solution 1 - 병합 정렬 알고리즘
def merge_sort(array):
if len(array) <= 1:
return array
mid = len(array) //2
left = merge_sort(array[:mid])
right = merge_sort(array[mid:])
i, j, k = 0, 0, 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
array[k] = left[i]
i += 1
else:
array[k] = right[j]
j += 1
k += 1
if i == len(left):
while j < len(right):
array[k] = right[j]
j += 1
k += 1
elif j == len(right):
while i < len(left):
array[k] = left[i]
i += 1
k += 1
return array
n, k = map(int, input().split())
array = list(map(int, input().split()))
array = merge_sort(array)
print(array[k - 1])
반응형
'Algorithm > 백준 알고리즘 풀이' 카테고리의 다른 글
[Baekjoon] 1568. 새 (0) | 2021.04.19 |
---|---|
[Baekjoon] 1543. 문서 검색 (0) | 2021.04.19 |
[Baekjoon] 7490. 0 만들기 (0) | 2021.04.19 |
[Baekjoon] 1074. Z (0) | 2021.04.19 |
[Baekjoon] 2747. 피보나치 수 (0) | 2021.04.19 |