Notice
Recent Posts
Recent Comments
관리 메뉴

πŸŒ²μžλΌλ‚˜λŠ”μ²­λ…„

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μž…κ΅­μ‹¬μ‚¬,python λ³Έλ¬Έ

μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μž…κ΅­μ‹¬μ‚¬,python

JihyunLee 2021. 2. 2. 13:33
λ°˜μ‘ν˜•

λ¬Έμ œμ„€λͺ…

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

nλͺ…이 μž…κ΅­μ‹¬μ‚¬λ₯Ό μœ„ν•΄ 쀄을 μ„œμ„œ 기닀리고 μžˆμŠ΅λ‹ˆλ‹€. 각 μž…κ΅­μ‹¬μ‚¬λŒ€μ— μžˆλŠ” μ‹¬μ‚¬κ΄€λ§ˆλ‹€ μ‹¬μ‚¬ν•˜λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ€ λ‹€λ¦…λ‹ˆλ‹€.
μ²˜μŒμ— λͺ¨λ“  μ‹¬μ‚¬λŒ€λŠ” λΉ„μ–΄μžˆμŠ΅λ‹ˆλ‹€. ν•œ μ‹¬μ‚¬λŒ€μ—μ„œλŠ” λ™μ‹œμ— ν•œ λͺ…λ§Œ 심사λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°€μž₯ μ•žμ— μ„œ μžˆλŠ” μ‚¬λžŒμ€ λΉ„μ–΄ μžˆλŠ” μ‹¬μ‚¬λŒ€λ‘œ κ°€μ„œ 심사λ₯Ό 받을 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 더 빨리 λλ‚˜λŠ” μ‹¬μ‚¬λŒ€κ°€ 있으면 κΈ°λ‹€λ Έλ‹€κ°€ 그곳으둜 κ°€μ„œ 심사λ₯Ό 받을 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
λͺ¨λ“  μ‚¬λžŒμ΄ 심사λ₯Ό λ°›λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ„ μ΅œμ†Œλ‘œ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
μž…κ΅­μ‹¬μ‚¬λ₯Ό κΈ°λ‹€λ¦¬λŠ” μ‚¬λžŒ 수 n, 각 심사관이 ν•œ λͺ…을 μ‹¬μ‚¬ν•˜λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ΄ λ‹΄κΈ΄ λ°°μ—΄ timesκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, λͺ¨λ“  μ‚¬λžŒμ΄ 심사λ₯Ό λ°›λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ˜ μ΅œμ†Ÿκ°’μ„ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ£Όμ„Έμš”.

풀이

μ²˜μŒμ—λŠ” for 문으둜 직접 μ‹œκ°„μ„ μ°ΎλŠ” λ°©μ‹μœΌλ‘œ ν’€μ—ˆλŠ”λ°, time out으둜 문제λ₯Ό μ œλŒ€λ‘œ ν•΄κ²°ν•˜μ§€ λͺ»ν–ˆλ‹€.

κ·Έλž˜μ„œ λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ 풀이λ₯Ό μ°Ύμ•„μ„œ μ΄λΆ„νƒμƒ‰μœΌλ‘œ ν’€μ–΄λ³΄μ•˜λ‹€. 

검사에 κ±Έλ¦¬λŠ” 총 μ‹œκ°„μ„ left right둜 두고, κ·Έ μ‹œκ°„ μ•ˆμ—μ„œ 졜적의 μ‹œκ°„μ„ μ°Ύμ•„λ‚˜κ°€λŠ” λ°©μ‹μœΌλ‘œ 문제λ₯Ό ν’€μ–΄λ³΄μ•˜λ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
def solution(n, times):
    ## 0 ~ μ΅œμ•…μ˜ μ‹œκ°„κΉŒμ§€ νƒμƒ‰
    left , right = 0, max(times) * n
    answer =0
    while left <= right:
        mid = (left + right) //2
        ## κ° μ‹¬μ‚¬κ΄€μ€ μ΄ μ‹œκ°„λ™μ•ˆ μ΄ λͺ‡λͺ…을 λ°›μ„ μˆ˜ μžˆμ„κΉŒ?
        people = 0
        for inspector in times:
            people += (mid//inspector)
            
            if people >= n:
                break
        ## μ‹œκ°„내에 λ‹€ λ°›μ„ μˆ˜ μžˆμ—ˆμœΌλ©΄, κ°’을 ν• λ‹Ήν•˜κ³  λ²”μœ„λ₯Ό μ€„인닀
        if people>=n:
            right = mid-1
            answer = mid
        ## μ‹œκ°„내에 λ‹€ λ°›μ§€ λͺ»ν–ˆμœΌλ©΄, μ‹œκ°„을 λŠ˜λ¦°λ‹€
        else:
            left = mid+1
            
    return  answer
cs
λ°˜μ‘ν˜•