본문 바로가기
Algorithm/백준 알고리즘 풀이

[Baekjoon] 11004. K 번째 수

by newnu 2021. 4. 19.
반응형

# 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