Updated:

PGS / ๊ด‘๋ฌผ ์บ๊ธฐ

ํ’€๋ฉด์„œ

โœ… ๊ด‘๋ฌผ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜๋Š” ์—†์œผ๋‚˜ ํ•œ๋ฒˆ ์ฑ„๊ตด ์‹œ์ž‘ ์‹œ ๋ฌด์กฐ๊ฑด 5๊ฐœ๋Š” ์ฑ„๊ตดํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, 5๊ฐœ๋กœ ๋ฌถ์€ chunk๋“ค์— ๋Œ€ํ•œ ์žฌ์ •๋ ฌ์€ ๊ฐ€๋Šฅํ•˜๋‹ค.

โœ… ์ „์ฒด ๊ด‘๋ฌผ์„ 5๊ฐœ์˜ ๋‹จ์œ„๋กœ ์ž๋ฅด๊ณ , ๊ฐ ์ฒญํฌ ๋‚ด์—์„œ ๋‹ค์ด์•„ -> ์ฒ  -> ๋Œ ์˜ ์ˆœ์„œ๋กœ ์ ์ˆ˜ ์ฐจ๋ฅผ ๋‘ฌ์„œ ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฒญํฌ๋“ค์„ ์ •๋ ฌํ•œ๋‹ค.

โœ… ์ •๋ ฌ๋œ ์ฒญํฌ๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ๋‹จ์ˆœํžˆ ๋‹ค์ด์•„ -> ์ฒ  -> ๋Œ ๊ณก๊ดญ์ด ์ˆœ์„œ๋กœ ์ฑ„๊ตด์„ ์ง„ํ–‰ํ•˜๋ฉด ์ตœ์†Œ ํ”ผ๋กœ๋„๊ฐ€ ๋ˆ„์ ๋œ๋‹ค.
</br>

ํ•ด๊ฒฐ ์ฝ”๋“œ1

def solution(picks, minerals):
    answer = 0
    end = min(sum(picks)*5, len(minerals))
    
    minerals_to_num = []
    # ๊ด‘๋ฌผ๋“ค 5๊ฐœ ๋‹จ์œ„๋กœ ์ž๋ฅด๊ธฐ
    for i in range(0, end, 5):
        if i+5 > end:
            minerals_ = minerals[i:]
        else:
            minerals_ = minerals[i:i+5]
        d, i, s = minerals_.count("diamond"), minerals_.count("iron"), minerals_.count("stone")
        minerals_to_num.append([d, i, s])
        
    minerals_to_num.sort(key = lambda x : (-x[0], -x[1]))
    
    for m in (minerals_to_num):
        if picks[0] > 0:
            picks[0] -= 1
            answer += sum(m)
        elif picks[1] > 0:
            picks[1] -= 1
            answer += (m[0]*5 + m[1]*1 + m[2]*1)
        else:
            picks[2] -= 1
            answer += (m[0]*25 + m[1]*5 + m[2]*1)
            
    return answer
            

Leave a comment