๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐˜ผ๐™ก๐™œ๐™ค๐™ง๐™ž๐™ฉ๐™๐™ข/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ์š•๋ฒ•(Greedy)'๋‹จ์†์นด๋ฉ”๋ผ' ํŒŒ์ด์ฌ ํ’€์ด

by beomcoder 2023. 8. 30.
728x90
๋ฐ˜์‘ํ˜•
https://school.programmers.co.kr/learn/courses/30/lessons/42884
 

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

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

programmers.co.kr

 

def solution(routes):
    order = []
    for i, (s, e) in enumerate(routes):
        order += [[s, 0, i], [e, 1, i]]
    # ๋จผ์ € ์ฐจ๋Ÿ‰์ด ๋“ค์–ด์˜ค๋Š”๊ฒƒ๊ณผ, ๋‚˜๊ฐ€๋Š”๊ฑธ ๊ตฌ๋ถ„์‹œ์ผœ์ฃผ๊ณ  ๊ทธ ์ฐจ๋Ÿ‰๋“ค์˜ ์ธ๋ฑ์Šค๊ฐ’์„ ๋ถ™์—ฌ์ฃผ์—ˆ๋‹ค.

    answer, pass_car, check = 0, [], []
    for _, out, index in sorted(order):
        if out:
        # ๋‚˜๊ฐ€๋Š” ์ฐจ๋Ÿ‰์ด๊ณ , ์นด๋ฉ”๋ผ์— check ๋˜์ง€ ์•Š์€ ์ฐจ๋Ÿ‰์ด๋ผ๋ฉด
            if index not in check:
                answer += 1
                check += pass_car
                pass_car = []
                # answer์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์ง€๋‚˜๊ฐ„ ์ฐจ๋Ÿ‰์„ ์ฒดํฌ๋˜์—ˆ๋‹ค๊ณ  ํ‘œ์‹œํ•œ๋‹ค.
                # ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์ง€๋‚˜๊ฐ„ ์ฐจ๋Ÿ‰์„ []์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
        else:
            pass_car.append(index)
            # ๋“ค์–ด์˜ค๋Š” ์ฐจ๋Ÿ‰์ด๋ผ๋ฉด pass_car์— ์ถ”๊ฐ€ํ•œ๋‹ค.
            
    return answer
    
'''
๊ณ ์†๋„๋กœ๋ฅผ ์ด๋™ํ•˜๋Š” ๋ชจ๋“  ์ฐจ๋Ÿ‰์ด ๊ณ ์†๋„๋กœ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ 
๋‹จ์†์šฉ ์นด๋ฉ”๋ผ๋ฅผ ํ•œ ๋ฒˆ์€ ๋งŒ๋‚˜๋„๋ก ์นด๋ฉ”๋ผ๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์†๋„๋กœ๋ฅผ ์ด๋™ํ•˜๋Š” ์ฐจ๋Ÿ‰์˜ ๊ฒฝ๋กœ routes๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, 
๋ชจ๋“  ์ฐจ๋Ÿ‰์ด ํ•œ ๋ฒˆ์€ ๋‹จ์†์šฉ ์นด๋ฉ”๋ผ๋ฅผ ๋งŒ๋‚˜๋„๋ก ํ•˜๋ ค๋ฉด 
์ตœ์†Œ ๋ช‡ ๋Œ€์˜ ์นด๋ฉ”๋ผ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

* ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์—„์ฒญ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์—ˆ๋Š”๋ฐ ์ข€ ์ฝ”๋“œ๊ฐ€ ๋ฏผ๋งํ•˜๊ธด ํ•˜๋‹ค
'''
728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€