๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/Greedy

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ง์น ํ•˜๊ธฐ

by syLim___ 2023. 5. 25.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/161989#

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


python

def solution(n, m, section):
    answer = 0       
    idx = 0
    while idx <= n:
        if idx in section:
            answer += 1
            idx += m
        else:
            idx += 1
    return answer

์ฒ˜์Œ์— ์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ์งฐ๋”๋‹ˆ 2๊ฐœ์˜ ํ…Œ์ผ€์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค.


๊ทธ๋ž˜์„œ ์•„๋ž˜ ์ฝ”๋“œ๋กœ ์ˆ˜์ •ํ•˜์˜€๋‹ค.

def solution(n, m, section):
    answer = 0       
            
    cur = 1 # ํ˜„์žฌ ์œ„์น˜
    idx = 0
    while idx < len(section):
        if cur <= section[idx]:
            cur = section[idx]
            answer += 1
            cur += m
        idx += 1
    return answer

1๋ฒˆ๋ถ€ํ„ฐ  n๋ฒˆ์งธ ์„น์…˜๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋Œ๊ธฐ๋กœ ํ•œ๋‹ค.

ํ˜„์žฌ ์œ„์น˜์—์„œ ํŽ˜์ธํŠธ๋ฅผ ์น ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋ฉด, ํŽ˜์ธํŠธ๋ฅผ ์น ํ•ด์•ผํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์˜์—ญ์œผ๋กœ ์ด๋™ํ•ด์„œ ํŽ˜์ธํŠธ์น ์„ ํ•œ๋‹ค.

 

 

๋‹จ์ˆœ๊ตฌํ˜„ ๋ฌธ์ œ์ธ๋ฐ ์ธ๋ฑ์‹ฑํ•˜๋Š”๊ฒŒ ๋„ˆ๋ฌด ํ—ท๊ฐˆ๋ ค์„œ ์•ฝ๊ฐ„ ๊ณ ์ƒํ–ˆ๋‹ค. ใ… ใ… ใ…  ๋‚˜ ๋ฐ”๋ณด...


 

๋‹ค๋ฅธ ๋ถ„๋“ค ํ’€์ด๋ฅผ ๋ณด๋‹ˆ๊นŒ, ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์ด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์•ˆ ์ข‹์•„์„œ์ธ์ง€

deque๋‚˜ set ๋“ฑ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ‘ผ ๋ถ„๋“ค์ด ๋งŽ์•˜๋‹ค.

 

๋‚ด๊ฐ€ ์ฒซ ๋ฒˆ์งธ๋กœ ์ œ์ถœํ–ˆ๋˜ ์ฝ”๋“œ๋„ ๋ฆฌ์ŠคํŠธ ๋ง๊ณ  set์œผ๋กœ ํ’€๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š์•˜๋‹ค.

def solution(n, m, section):
    section = set(section) ### ์ˆ˜์ •
    answer = 0       
    idx = 0
    while idx <= n:
        if idx in section:
            answer += 1
            idx += m
        else:
            idx += 1
    return answer

์ด๋ ‡๊ฒŒ ๋‘ ๋ฒˆ์งธ ๋ผ์ธ๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋‹ˆ ์ •๋‹ตํŒ์ •์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค!

728x90