๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’๊ณต๋ถ€/์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.3] ์ˆซ์ž ๊ฒŒ์ž„

by rindev 2021. 4. 27.

programmers.co.kr/learn/courses/30/lessons/12987

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆซ์ž ๊ฒŒ์ž„

xx ํšŒ์‚ฌ์˜ 2xN๋ช…์˜ ์‚ฌ์›๋“ค์€ N๋ช…์”ฉ ๋‘ ํŒ€์œผ๋กœ ๋‚˜๋ˆ  ์ˆซ์ž ๊ฒŒ์ž„์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ํŒ€์„ ๊ฐ๊ฐ AํŒ€๊ณผ BํŒ€์ด๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž ๊ฒŒ์ž„์˜ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๋ชจ๋“  ์‚ฌ์›์ด ๋ฌด์ž‘์œ„๋กœ

programmers.co.kr

 

์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ sortํ•ด์„œ ํ’€๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€? ํ•˜๋‹ค๊ฐ€ ํšจ์œจ์„ฑ์—์„œ ๊ฑธ๋ฆฌ๊ฒ ์ง€? ํ•˜๊ณ  ๊ฑ ๋‚ด๋ดค๋Š”๋ฐ ๋‹ต๋„ ํ‹€๋ ธ๋‹ค๊ณ ํ•ด์„œ ? ์‹ถ์—ˆ๋‹คใ… ใ…  ๊ณ„์† ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ ค๊ณ  ํ•œ๊ฒŒ ์‚ฝ์งˆ์˜ ์›์ธ์ธ๋“ฏ๐Ÿค”

ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒ€์ƒ‰ํ•ด๋ดค๋”๋‹ˆ!

1. min(A) >= max(B) ์ด๋ฉด ํ•˜๋‚˜๋„ ์ด๊ธด๊ฒŒ ์—†๋‹ค๋Š” ๋ง์ด๋‹ˆ๊นŒ.. ๋ฐ”๋กœ 0 ๋ฆฌํ„ด
2. A์™€ B๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ.
   A[0]์™€ B[0]๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ง€๊ฑฐ๋‚˜ ๋น„๊ธฐ๋ฉด continue -> A[1]๊ณผ B[0]์„ ๋น„๊ต... ๋ฐ˜๋ณต
   ์ด๊ธฐ๋ฉด answer += 1 ํ•˜๊ณ  B์—์„œ pop

์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ• ์ˆ˜๊ฐ€ใ… ใ…  ๋‹ค๋“ค ์ฒœ์žฌ๊ฐ™๋‹ค..

 

์•„ ๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ๊ฒŒ B๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ, ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋น ๋ฅด๊ฒŒ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด heapq๋ฅผ ์‚ฌ์šฉํ•˜๊ณ 

์ตœ๋Œ€ํž™์„ ์“ฐ๊ธฐ์œ„ํ•ด ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค! ๊ทธ๋ž˜์„œ A์™€ B๋ฅผ ๋น„๊ตํ•  ๋•Œ์—๋„ ์ ˆ๋Œ€๊ฐ’์„ ์ทจํ•˜๊ฑฐ๋‚˜ -1์„ ๊ณฑํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

 

๐Ÿ™‹‍โ™€๏ธ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

๋”๋ณด๊ธฐ
import heapq
def solution(A, B):
    answer = 0
    
    if min(A) >= max(B):
        return 0
    
    A.sort(reverse = True) #A๋ฅผ ๋‚ด๋ฆผ ์ •๋ ฌ
    
    B = [-b for b in B]
    # print(B)
    heapq.heapify(B)
    
    for i in range(len(A)):
        if A[i] >= B[0]*-1 : #์ง€๊ฑฐ๋‚˜ ๋น„๊ธฐ๋ฉด
            continue
        else:
            heapq.heappop(B)
            answer += 1
    
    return answer 

๋Œ“๊ธ€