๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[Python ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ์š•๋ฒ•(Greedy) > ์ฒด์œก๋ณต

by Vada Kim 2021. 5. 3.
728x90
๋ฐ˜์‘ํ˜•

์ด๊ฑด... ์ œ์ •์‹ ์˜ ์ƒํƒœ๋กœ ํ‘ผ๊ฒŒ ์•„๋‹Œ ๋“ฏ ํ•˜๋‹ค...

์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ํ’€์—ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ,

๊ทธ๋ƒฅ ๊ธฐ๋…์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ฒ ๋‹ค.

...

์ธ๊ฐ„์˜ ์‚ฌ๊ณ ์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ’€์ด๋ฐฉ๋ฒ•.

def solution(n, lost, reserve):
    answer = n - len(lost)
    for lost_one in lost:
        if lost_one in reserve: #์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์ด ์žˆ๋‹ค๋ฉด
            answer += 1
            lost[lost.index(lost_one)] = -1
            del reserve[reserve.index(lost_one)]
        else:
            if lost_one == 1: #์ฒซ๋ฒˆํ˜ธ์ผ๋•Œ
                if lost_one+1 in reserve and lost_one+1 not in lost:
                    answer+=1
                    del reserve[reserve.index(lost_one+1)]
            else:
                if lost_one-1 in reserve and lost_one-1 not in lost: #์•ž ๋ฒˆํ˜ธ ํƒ์ƒ‰
                    answer+=1
                    del reserve[reserve.index(lost_one-1)]
                elif lost_one+1 in reserve and lost_one+1 not in lost: #๋’ท ๋ฒˆํ˜ธ ํƒ์ƒ‰
                    answer+=1
                    del reserve[reserve.index(lost_one+1)]

    return answer

 

728x90
๋ฐ˜์‘ํ˜•