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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ตฌ๋ช…๋ณดํŠธ

by syLim___ 2023. 7. 5.
728x90

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

 

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

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

programmers.co.kr


๋ณดํŠธ์— ์ตœ๋Œ€ 2๋ช…์˜ ์ธ์›์ œํ•œ์ด ์žˆ๋‹ค๋Š” ์กฐ๊ฑด๋งŒ ์ž˜ ์ฒดํฌํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

์ฒ˜์Œ์—๋Š” ๋ชธ๋ฌด๊ฒŒ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ํ•œ๋ฒˆ์— ํ•œ ๋ช… ๋˜๋Š” ๋‘ ๋ช…์”ฉ ํƒœ์›Œ์ฃผ์—ˆ๋Š”๋ฐ,

๊ทธ๋ ‡๊ฒŒ ํ’€๋ฉด [10,20,30,40,50,60,70,80,90], 100 ๊ณผ ๊ฐ™์€ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์—์„œ ์˜ค๋‹ต์ด ๋‚˜์˜จ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋ชธ๋ฌด๊ฒŒ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ ,

๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž๊ณผ ๋งจ ๋’ค (๋‚จ์€ ์ธ์› ์ค‘ ๋ชธ๋ฌด๊ฒŒ ์ตœ๋Œ€์ธ ์ธ์›๊ณผ ์ตœ์†Œ์ธ ์ธ์›) ์„ ํ•œ ๋ฒˆ์— ํƒœ์šธ ์ˆ˜ ์žˆ์œผ๋ฉด ํƒœ์šฐ๊ณ ,

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋งจ ์•ž ์ธ์›๋งŒ ํƒœ์šฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค.

 

python

def solution(people, limit):
    answer = 0
    people.sort(reverse = True)
    # 1๋ช… ๋˜๋Š” 2๋ช…์”ฉ ํƒœ์šฐ๊ธฐ
    idx = 0
    while idx < len(people):
        if people[idx] + people[-1] <= limit:
            people.pop()
        idx += 1
        answer += 1
    
    return answer

 

๋‹ค๋ฅธ ํ’€์ด์ค‘ ๋‚˜์™€ ์•„์ด๋””์–ด๋Š” ๋™์ผํ•˜์ง€๋งŒ, pop()์„ ์“ฐ์ง€ ์•Š๊ณ  ํˆฌํฌ์ธํ„ฐ๋ฅผ ์จ์„œ ํ‘ผ ์ฝ”๋“œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

์—ฐ์‚ฐ์†๋„๊ฐ€ ๋นจ๋ผ์„œ ํšจ์œจ์„ฑ์—์„œ ๊ฑฐ์˜ 2๋ฐฐ์ •๋„ ์ฐจ์ด๊ฐ€ ๋‚ฌ๋‹ค. ํ›จ์”ฌ ์ข‹์€๋“ฏ!

def solution(people, limit):
    answer = 0
    people.sort(reverse = True)
    # 1๋ช… ๋˜๋Š” 2๋ช…์”ฉ ํƒœ์šฐ๊ธฐ
    a = 0
    b = len(people)-1
    while a <= b:
        if people[a] + people[b] <= limit:
            b -= 1
        a += 1
        answer += 1
    
    return answer
728x90