백준 11004 : 문제링크

  • 문제유형 : 정렬

  • 설명

    1. 데이터의 크기가 5000000이다

    2. 병합정렬, 퀵 정렬, 힙 정렬을 사용해야한다.

    3. python 기본 정렬 라이브러리로도 가능하다.

  • 풀이

    • 병합정렬

      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
      def merge_sort(array):
      if len(array) == 1:
      return array
      left = array[:mid]
      right = array[mid:]
      i, j, k = 0
      while i < len(left) and j < len(right):
      if left[i] < right[j]
      array[k] = left[i]
      left += 1
      else:
      array[k] = right[j]
      right += 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])

    • 정렬 라이브러리

      1
      2
      3
      4
      5
      6
      n, k = map(int, input().split(' '))
      array = list(map(int, input().split()))

      array = sorted(array)

      print(array[k-1])