๐Ÿ“Œ ํŒŒ์ด์ฌ ์œผ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

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

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

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

๊ฒฝํ™”๋Š” ๊ณผ์ˆ˜์›์—์„œ ๊ทค์„ ์ˆ˜ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝํ™”๋Š” ์ˆ˜ํ™•ํ•œ ๊ทค ์ค‘ 'k'๊ฐœ๋ฅผ ๊ณจ๋ผ ์ƒ์ž ํ•˜๋‚˜์— ๋‹ด์•„ ํŒ๋งคํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ˆ˜ํ™•ํ•œ ๊ทค์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š์•„ ๋ณด๊ธฐ์— ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๊ฒฝํ™”๋Š” ๊ทค์„ ํฌ๊ธฐ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ–ˆ์„ ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒฝํ™”๊ฐ€ ์ˆ˜ํ™•ํ•œ ๊ทค 8๊ฐœ์˜ ํฌ๊ธฐ๊ฐ€ [1, 3, 2, 5, 4, 5, 2, 3] ์ด๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค. ๊ฒฝํ™”๊ฐ€ ๊ทค 6๊ฐœ๋ฅผ ํŒ๋งคํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ํฌ๊ธฐ๊ฐ€ 1, 4์ธ ๊ทค์„ ์ œ์™ธํ•œ ์—ฌ์„ฏ ๊ฐœ์˜ ๊ทค์„ ์ƒ์ž์— ๋‹ด์œผ๋ฉด, ๊ทค์˜ ํฌ๊ธฐ์˜ ์ข…๋ฅ˜๊ฐ€ 2, 3, 5๋กœ ์ด 3๊ฐ€์ง€๊ฐ€ ๋˜๋ฉฐ ์ด๋•Œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜๊ฐ€ ์ตœ์†Œ์ผ ๋•Œ์ž…๋‹ˆ๋‹ค.

๊ฒฝํ™”๊ฐ€ ํ•œ ์ƒ์ž์— ๋‹ด์œผ๋ ค๋Š” ๊ทค์˜ ๊ฐœ์ˆ˜ k์™€ ๊ทค์˜ ํฌ๊ธฐ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด tangerine์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฒฝํ™”๊ฐ€ ๊ทค k๊ฐœ๋ฅผ ๊ณ ๋ฅผ ๋•Œ ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

๐Ÿ“Œ ์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ k  tangerine์˜ ๊ธธ์ด ≤ 100,000
  • 1 ≤ tangerine์˜ ์›์†Œ ≤ 10,000,000

 

๐Ÿ“Œ ์ž…์ถœ๋ ฅ ์˜ˆ


์ถ”์ธก) 

ํฌ๊ธฐ ์ˆซ์ž๋ฅผ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ์ •๋ฆฌ.

๊ฐ€์žฅ max ๊ฐ’์ธ๊ฑฐ ๋ถ€ํ„ฐ k๊ฐ’์—์„œ ๋นผ๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์„œ ๊ทธ ๋‹ค์Œ ํฐ๊ฐ’ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ตœ๋Œ€ํ•œ ํ•œ ์ข…๋ฅ˜์—์„œ ๋งŽ์€ ์ˆ˜๋ฅผ ๋บ„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋  ๋“ฏ!

 

์†Œ์Šค์ฝ”๋“œ) 

* 1์ฐจ) 82.4 ์  ๋‚˜๋จธ์ง€ ์‹œ๊ฐ„์ดˆ๊ณผ 

def solution(k, tangerine):
    
    answer = 0
    tangerine_arr = [0] * (max(tangerine) + 1)
    
    for one in tangerine :
        tangerine_arr[one] += 1
        
    while k > 0 :
        max_num = max(tangerine_arr)
        k -= max_num
        answer += 1
        tangerine_arr[tangerine_arr.index(max_num)] = 0
    
    return answer

* 2์ฐจ) ์„ฑ๊ณต

def solution(k, tangerine):
    
    answer = 0
    tangerine_arr = [0] * (max(tangerine) + 1)
    
    for one in tangerine :
        tangerine_arr[one] += 1
        
    if k < max(tangerine_arr) :
        return 1
        
    tangerine_arr.sort()
    tangerine_arr.reverse()
    
    for one in tangerine_arr :
        k -= one
        answer += 1
        if k <= 0 :
            break
    
    return answer

 

 

๋ฆฌ๋ทฐ) 

1์ฐจ ํ”ผ๋“œ๋ฐฑ)

1์ฐจ์—์„œ while๋ฌธ์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๋Š” ๊ฑฐ ๊ฐ™์•„์„œ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ• ๊นŒ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ,

์ด๊ฒŒ ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ค‘์š”ํ•œ๊ฑฐ์ง€ ํฌ๊ธฐ ์ข…๋ฅ˜๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋ฌธ์ œ์—ฌ์„œ ์ด๋ถ€๋ถ„์„ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ดค๋‹ค.

 

ํฌ๊ธฐ๋ณ„๋กœ ๋ฐฐ์—ด ์ •๋ฆฌํ•œ ํ›„์— ์ •๋ ฌํ•˜๊ณ  ์—ญ์ •๋ ฌํ•ด for๋ฌธ์œผ๋กœ ๊ฐ€์žฅ ํฐ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง„ ๊ฑฐ ๋ถ€ํ„ฐ k์—์„œ ๋นผ๋ฉด ๋˜๊ฒ ๋‹ค ์‹ถ์–ด ์ง„ํ–‰!

 

'Coding Test > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Programmers] ๊ณต์› ์‚ฐ์ฑ…  (0) 2023.04.03
Programmers] ๋ง์น ํ•˜๊ธฐ  (0) 2023.03.28
์ˆœ์—ด  (0) 2023.03.18
Programmers] ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ  (0) 2023.03.18
Programmers] [1์ฐจ] ์บ์‹œ  (0) 2023.03.18

+ Recent posts