๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ ๊ธฐ๋ก

์ด์ฝ”ํ…Œ ํŒŒ์ด์ฌ : ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ

by hyeonha 2024. 5. 5.

๋ชฉ์ฐจ

    ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 

     

    ์„ ํƒ์ •๋ ฌ

    : ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•ด ๋งจ ์•ž์˜ ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณต

    ๋งค๋ฒˆ ํ˜„์žฌ ๋ฒ”์œ„์—์„œ ์ œ์ผ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณจ๋ผ์„œ ์ œ์ผ ์•ž์ชฝ์œผ๋กœ ๋ณด๋‚ด์ฃผ๋Š” ์ •๋ ฌ๋ฐฉ๋ฒ•!

    step : ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ไธญ ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ฐ€์žฅ ์•ž์˜ ์ˆ˜๊ณผ ๋ฐ”๊ฟ”์ค€๋‹ค.

    step0  : ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ไธญ ๊ฐ€์žฅ ์ž‘์€ 0์„ ์„ ํƒํ•˜์—ฌ ๊ฐ€์žฅ ์•ž์˜ 7๊ณผ ๋ฐ”๊ฟ”์ค€๋‹ค.

    ์ด ๋•Œ ์ฒ˜๋ฆฌ ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ์ „์ฒด ๋ฒ”์œ„๋ฅผ ๋งํ•จ.

     

    - ํƒ์ƒ‰ ๋ฒ”์œ„๋Š” ๋งค๋ฒˆ ์ค„์–ด๋“ ๋‹ค.

    array = [7,5,9,0,3,1,6,2,4,8]
    
    for i in range(len(array)):
      min_index = i
      for j in range(i+1,len(array)):
        if array[min_index] > array[j]:
          min_index = j
        # ํ˜„์žฌ ๊ฐ€์žฅ ์ž‘์€ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์žฅ ์•ž์ชฝ ์›์†Œ์™€ ๋ฐ”๊ฟ”์ค€๋‹ค.
        array[i] , array[min_index] = array[min_index] , array[i]
    
    print(array)

     

    ๐Ÿ’กpython์˜ swap ๋ฐฉ๋ฒ•

    ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋ฐฉ๋ฒ•์—์„œ temp ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ฐ”๊ฟ”์ค„ ์ˆ˜ ์žˆ๋‹ค.

    array[i] , array[min_index] = array[min_index] , array[i]

     

    ์‚ฝ์ž… ์ •๋ ฌ

    ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ณจ๋ผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

    array = [7,5,9,0,3,1,6,2,4,8]
    
    for i in range(1,len(array)):
      for j in range(i,0,-1):  # ์™ผ์ชฝ์œผ๋กœ ์ด๋™
        if array[j] < array[j-1]:
          array[j],array[j-1] = array[j-1],array[j]
        else:
          break
    print(array)

    ํ€ต ์ •๋ ฌ

    array = [5,7,9,0,3,1,6,2,4,8]
    
    # ํ€ต ์ •๋ ฌ์€ ์žฌ๊ท€์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘!
    
    def quick_sort(array, start,end):
    
      # ์ข…๋ฃŒ ์กฐ๊ฑด
      if start >= end : # ์›์†Œ๊ฐ€ ํ•œ๊ฐœ์ธ ๊ฒฝ์šฐ
        return
    
      pivot = start
      left = start+1
      right = end
    
    # left์™€ right๊ฐ€ ์—‡๊ฐˆ๋ฆฐ ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜๋„๋ก ํ•œ๋‹ค.
      while(left <= right): 
      
      # ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ pivot๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.
        while (left <=end and array[left] <= array[pivot]):
          left +=1 
    	
      # ์˜ค๋ฅธ์ชฝ์—์„œ๋ถ€ํ„ฐ pivot๋ณด๋‹ค ์ž‘์€๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.
        while(right >start and array[right] >= array[pivot]):
          right -=1
      # ๋งŒ์•ฝ ๋‘ ๋ฐ์ดํ„ฐ๊ฐ€ ์—‡๊ฐˆ๋ ธ๋‹ค๋ฉด ํ”ผ๋ฒ— <-> ์ž‘์€ ๋ฐ์ดํ„ฐ
        if left>right:
          array[right] , array[pivot] = array[pivot],array[right]
      # ์—‡๊ฐˆ๋ฆฌ์ง€ ์•Š์•˜๋‹ค๋ฉด ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ์™€ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ต์ฒดํ•ด์ค€๋‹ค.
        else : 
          array[left] ,array[right] = array[right] , array[left]
        
      # ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ํ€ต ์ •๋ ฌ
      quick_sort(array,start,right-1)
      # ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ํ€ต ์ •๋ ฌ
      quick_sort(array, right+1,end)
    
    quick_sort(array, 0, len(array)-1)
    print(array)

     

    ํŒŒ์ด์ฌ์˜ ์žฅ์ ์„ ๋” ์‚ด๋ ค๋ณด์ž

    ๋ฆฌ์ŠคํŠธ ์Šฌ๋ผ์ด์‹ฑ๊ณผ ๋ฆฌ์Šคํฌ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์ด์šฉํ•œ๋‹ค!! 

    array = [5,7,9,0,3,1,6,2,4,8]
    
    # ํ€ต ์ •๋ ฌ์€ ์žฌ๊ท€์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘!
    
    def quick_sort(array):
    
      # ์ข…๋ฃŒ ์กฐ๊ฑด
      if len(array) <=1:
        return array
      
      pivot = array[0]
      tail = array[1:] ๋‘๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€๋ฅผ ๋‹ด์•„์ค€๋‹ค. 
    
      left_side = [x for x in tail if x <= pivot]
      right_side = [x for x in tail if x > pivot]
    
      return   quick_sort(left_side) + [pivot] + quick_sort(right_side)
    
    
    print(quick_sort(array))

    ๊ณ„์ˆ˜ ์ •๋ ฌ

    array = [7,5,9,0,3,1,6,2,9,1,4,8,0,5,2]
    
    #์ •๋ ฌํ•  ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์˜ ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ ์–ธํ•ด์ค€๋‹ค.
    # ๋ชจ๋“  ๊ฐ’์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
    count =[0] * (max(array+1))
    
    for i in range(len(array)):
      count[array[i]] +=1
    
      # ์ธ๋ฑ์Šค๋ฅผ ํ™•์ธํ•˜๋ฉด์„œ ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ
    for i in range(len(count)):
      for j in range(count[j]):
        print(i,end=' ')

    ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต

     

    *๋‹ค๋งŒ ํ€ต ์ •๋ ฌ์€ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ o(N^2)์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Œ

     

     

    * random ํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

    * ํŒŒ์ด์ฌ ๊ธฐ๋ณธ : ๋ณ‘ํ•ฉ์ •๋ ฌ์„ ๊ธฐ๋ณธ์œผ๋กœํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. 


    1๏ธโƒฃ์‹ค์ „ ๋ฌธ์ œ 1 : ์œ„์—์„œ ์•„๋ž˜๋กœ 

    ๐Ÿ’ก๋ฐฐ์šด ๋‚ด์šฉ : ํŒŒ์ด์ฌ์˜ sorted

    - ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ sorted์— ๋Œ€ํ•ด์„œ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

    - ์‚ฌ์šฉ๋ฒ•

     

    sorted๋Š” ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜จ ์ดํ„ฐ๋Ÿฌ๋ธ”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ์šด ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค!

     

    ์—ฌ๊ธฐ์„œ ์ดํ„ฐ๋Ÿฌ๋ธ”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

    array = sorted(array,reverse=True)

     

    - sorted(์ •๋ ฌํ•  ๋ฐ์ดํ„ฐ)

    list.sort( ) ์™€์˜ ์ฐจ์ด

    sort๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ๋งŒ ์ •์˜๋œ๋‹ค.  ๊ทธ๋Ÿฌ๋‚˜ sorted๋Š” ๋ชจ๋“  ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค!

     

    - sorted(์ •๋ ฌํ•  ๋ฐ์ดํ„ฐ , key= ์ •๋ ฌ ๊ธฐ์ค€  )

    key๋Š” ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

     

    - sorted(์ •๋ ฌํ•  ๋ฐ์ดํ„ฐ, reverse=์˜ค๋ฆ„์ฐจ์ˆœ(False) ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ(True))

    reverse๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ๊ณผ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ์ง€์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

    - sorted(์ •๋ ฌํ•  ๋ฐ์ดํ„ฐ, key= ์ •๋ ฌ ๊ธฐ์ค€ , reverse = ์˜ค๋ฆ„์ฐจ์ˆœ(False) ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ(True) )

    n = int(input())
    
    array = []
    for i in range(n):
      array.append(int(input()))
    
    array = sorted(array,reverse=True)
    
    for i in array:
      print(i, end=' ')

    2๏ธโƒฃ์‹ค์ „๋ฌธ์ œ 2 : ์„ฑ์ ์ด ๋‚ฎ์€ ์ˆœ์„œ๋กœ ํ•™์ƒ ์ถœ๋ ฅํ•˜๊ธฐ

    (์ด๋ฆ„ ์„ฑ์ ) ๋ฌถ์Œ์—์„œ ์„ฑ์ ์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ด๋ฆ„์„ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค. 

    n = int(input())
    
    array = []
    for i in range(n):
      input_data = input().split()
      array.append((input_data[0],int(input_data[1])))
    
    print(array)
    
    array = sorted(array,key= lambda student : student[1])
    
    for student in array:
      print(student[0], end=' ')

    ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ

    ๐Ÿ˜ญ๋žŒ๋‹ค๋ฌธ๋ฒ• ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”๊ฑฐ์•ผ?!?

    ์šฐ์„  ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ํ’€์–ด์„œ ์ดํ•ดํ•ด๋ณด์•˜๋‹ค. 

    n = int(input())
    
    def get_score(student):
      return student[1]
    
    array = []
    for i in range(n):
      input_data = input().split()
      array.append((input_data[0],int(input_data[1])))
    
    print(array)
    
    array = sorted(array,key= get_score)
    
    for student in array:
      print(student[0], end=' ')

     

     

    ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ

    ๐Ÿ’กsorted์—์„œ key์— ๋”ฐ๋ผ ์ •๋ ฌ๋˜๋Š” ์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž!

    key๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด 

    ํ•™์ƒ ๋ฆฌ์ŠคํŠธ [ (์ด๋ฆ„1, 80), (์ด๋ฆ„2, 90), (์ด๋ฆ„3, 75) ]์„ ๋น„๊ตํ•ด์„œ ์ •๋ ฌํ•˜๊ฒŒ ๋œ๋‹ค.

    ํŠœํ”Œ๋ผ๋ฆฌ์˜ ๋น„๊ต๋Š” ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋น„๊ตํ•˜๋ฏ€๋กœ ์ด๋ฆ„ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

     

    ๊ทธ๋Ÿฌ๋‚˜ keyํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ฐ ์›์†Œ์— ๋Œ€ํ•ด key์— ์ง€์ •ํ•œ lambda x:x[1] ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

     

    * (์ด๋ฆ„1, 80)์— ๋Œ€ํ•ด์„œ๋Š” 80์„ ๋ฐ˜ํ™˜

    * (์ด๋ฆ„2, 90)์— ๋Œ€ํ•ด์„œ๋Š” 90์„ ๋ฐ˜ํ™˜

    * (์ด๋ฆ„3, 75)์— ๋Œ€ํ•ด์„œ๋Š” 75๋ฅผ ๋ฐ˜ํ™˜

     

    ๋”ฐ๋ผ์„œ sorted๋Š” 80,90,75 ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค!

     

    ๐Ÿ’ก๋žŒ๋‹ค๋ฅผ ์ ์šฉํ•ด๋ณด์ž

    array = sorted(array,key= lambda student : student[1])

     

    array์— ๋Œ€ํ•ด์„œ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋žŒ๋‹ค์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์ธ student์— ๋“ค์–ด๊ฐ€์„œ student[1]์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

    ๋”ฐ๋ผ์„œ (์ด๋ฆ„1, 80)์ธ ์ฒซ๋ฒˆ์งธ ์›์†Œ๊ฐ€ ๋žŒ๋‹คํ•จ์ˆ˜์— ๋“ค์–ด๊ฐ€๋ฉด  stduent[1]์ธ 80์ด ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์ด๋‹ค

     

    ๊ฒฐ๊ณผ์ ์œผ๋กœ  ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค

    * (์ด๋ฆ„1, 80)์— ๋Œ€ํ•ด์„œ๋Š” 80์„ ๋ฐ˜ํ™˜

    * (์ด๋ฆ„2, 90)์— ๋Œ€ํ•ด์„œ๋Š” 90์„ ๋ฐ˜ํ™˜

    * (์ด๋ฆ„3, 75)์— ๋Œ€ํ•ด์„œ๋Š” 75๋ฅผ ๋ฐ˜ํ™˜


    3๏ธโƒฃ์‹ค์ „ ๋ฌธ์ œ 3 : ๋‘ ๋ฐฐ์—ด์˜ ์›์†Œ ๊ต์ฒด

     

    n,k = map(int,input().split())
    A = []
    B = []
    A  = list(map(int, input().split()))
    B  = list(map(int, input().split()))
    
    A.sort()
    B.sort(reverse=True)
    
    for i in range(k):
    
      if A[i]<B[i]:
        A[i], B[i] = B[i], A[i]
      else:
        continue
    
    print(sum(A))

     

    ๐Ÿ’กpython์˜ continue์™€ break์˜ ์ฐจ์ด 

    python์—์„œ continue์™€ break์˜ ์ฐจ์ด๋ฅผ ์ •๋ฆฌํ•˜์ž

    ๋‚˜๋Š” A์˜ ์›์†Œ๋ณด๋‹ค B์˜ ์›์†Œ๊ฐ€ ํด ๋•Œ๋งŒ ์„œ๋กœ ์›์†Œ๋ฅผ ๊ต์ฒดํ•˜๋„๋ก ํ•˜์˜€๊ณ , ์•„๋‹ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ for๋ฌธ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค๋Š”  ๋ชฉ์ ์œผ๋กœ continue๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

     

    continue : ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ํ˜„์žฌ ๋ฐ˜๋ณต์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

    for i in range(5):
        if i == 2:
            continue
        print(i)

     

    i๊ฐ€ 2์ธ ๊ฒฝ์šฐ continue๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ทธ ๋ฐ˜๋ณต์€ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

    ๋”ฐ๋ผ์„œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” 0 1 3 4 ๊ฐ€ ๋œ๋‹ค.

     

    break : ๋ฐ˜๋ณต๋ฌธ ์ „์ฒด๋ฅผ ์™„์ „ํžˆ ๋น ์ ธ๋‚˜์˜จ๋‹ค! 

    for i in range(5):
        if i == 2:
            break
        print(i)

     

    i๊ฐ€ 2์ธ ๊ฒฝ์šฐ break๋ฅผ ๋งŒ๋‚˜๊ณ , ๋ฐ˜๋ณต๋ฌธ ์ „์ฒด๋ฅผ ์™„์ „ํžˆ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. 

    ๋”ฐ๋ผ์„œ ์ถœ๋ ฅ๊ฒฐ๊ณผ๋Š” 0 1 ์ด ๋œ๋‹ค.

     

    ์šฐ์„ , A์˜ ์›์†Œ๋ณด๋‹ค B์˜ ์›์†Œ๊ฐ€ ์ž‘์„ ๋•Œ๋Š” ๊ต์ฒด๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค๋Š” ๋ชฉ์ ์—์„œ continue๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ ์ ์ ˆํ•˜์˜€๋‹ค.

     

    ํ•˜์ง€๋งŒ A๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, B๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ด ๋œ ์ƒํƒœ์ด๋‹ค. 

    ๋”ฐ๋ผ์„œ ๋งŒ์•ฝ ํŠน์ • i ์ธ๋ฑ์Šค์—์„œ A๊ฐ€ B๋ณด๋‹ค ์ปธ์„ ๊ฒฝ์šฐ B์˜ ์ดํ›„ ์›์†Œ๋„ A์˜ ์›์†Œ๋ณด๋‹ค ์ž‘์„ ๊ฒƒ์ด๋‹ค!!

     

    ๋”ฐ๋ผ์„œ ๋”์ด์ƒ ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  break๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•˜๋‹ค.

     

    ์ˆ˜์ •ํ•œ ์ฝ”๋“œ

    n,k = map(int,input().split())
    A = []
    B = []
    A  = list(map(int, input().split()))
    B  = list(map(int, input().split()))
    
    A.sort()
    B.sort(reverse=True)
    
    for i in range(k):
    
      if A[i]<B[i]:
        A[i], B[i] = B[i], A[i]
      else:
        break
    
    print(sum(A))

     

    ์ƒ๊ฐ ๊ณผ์ • 

     

     

    ์œ„ ์‚ฌ์ง„์€ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์ „ ์ƒ๊ฐ ๊ณผ์ •์„ ์ ์–ด๋ณธ ๋‚ด์šฉ์ด๋‹ค.

     

    - ์ƒ๊ฐ 1 ์˜ ๊ฒฝ์šฐ๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ‘ผ ์›๋ฆฌ์˜€๋‹ค.

    - ์ƒ๊ฐ 2 ๋Š” A์™€ B์˜ ๊ฐ’๋“ค์ด ๋‚˜์˜ค๋Š” ๊ฐœ์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ๊ณ„์ˆ˜ ์ •๋ ฌ๋กœ ํ’€ ์ˆ˜ ์žˆ์„๊นŒ? ํ•˜๋Š” ์ƒ๊ฐ์ด์—ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋”ฐ๋ผ ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค๋Š” ์ ์—์„œ ๊ฐ’ ๋ฒ”์œ„๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค.

    728x90