๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Python/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต_Level 1] ๋ช…์˜ˆ์˜ ์ „๋‹น (1)

by 2soupsoup 2022. 12. 29.

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต_Level 1] ๋ช…์˜ˆ์˜ ์ „๋‹น (1) ํ’€๋Ÿฌ ๊ฐ€๊ธฐ

 

โ“ ๋ฌธ์ œ ์„ค๋ช…

"๋ช…์˜ˆ์˜ ์ „๋‹น"์ด๋ผ๋Š” TV ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋งค์ผ 1๋ช…์˜ ๊ฐ€์ˆ˜๊ฐ€ ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅด๊ณ , ์‹œ์ฒญ์ž๋“ค์˜ ๋ฌธ์ž ํˆฌํ‘œ์ˆ˜๋กœ ๊ฐ€์ˆ˜์—๊ฒŒ ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์ผ ์ถœ์—ฐํ•œ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ถœ์—ฐ ๊ฐ€์ˆ˜๋“ค์˜ ์ ์ˆ˜ ์ค‘ ์ƒ์œ„ k๋ฒˆ์งธ ์ด๋‚ด์ด๋ฉด ํ•ด๋‹น ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๋ฅผ ๋ช…์˜ˆ์˜ ์ „๋‹น์ด๋ผ๋Š” ๋ชฉ๋ก์— ์˜ฌ๋ ค ๊ธฐ๋…ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์ดํ›„ ์ดˆ๊ธฐ์— k์ผ๊นŒ์ง€๋Š” ๋ชจ๋“  ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. k์ผ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๊ธฐ์กด์˜ ๋ช…์˜ˆ์˜ ์ „๋‹น ๋ชฉ๋ก์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ๊ฐ€์ˆ˜ ์ ์ˆ˜๋ณด๋‹ค ๋” ๋†’์œผ๋ฉด, ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋˜๊ณ  ๊ธฐ์กด์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ์ ์ˆ˜๋Š” ๋ช…์˜ˆ์˜ ์ „๋‹น์—์„œ ๋‚ด๋ ค์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋งค์ผ "๋ช…์˜ˆ์˜ ์ „๋‹น"์˜ ์ตœํ•˜์œ„ ์ ์ˆ˜๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, k = 3์ด๊ณ , 7์ผ ๋™์•ˆ ์ง„ํ–‰๋œ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ [10, 100, 20, 150, 1, 100, 200]์ด๋ผ๋ฉด, ๋ช…์˜ˆ์˜ ์ „๋‹น์—์„œ ๋ฐœํ‘œ๋œ ์ ์ˆ˜๋Š” ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด [10, 10, 10, 20, 20, 100, 100]์ž…๋‹ˆ๋‹ค.

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

๋ช…์˜ˆ์˜ ์ „๋‹น ๋ชฉ๋ก์˜ ์ ์ˆ˜์˜ ๊ฐœ์ˆ˜ k, 1์ผ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋‚ ๊นŒ์ง€ ์ถœ์—ฐํ•œ ๊ฐ€์ˆ˜๋“ค์˜ ์ ์ˆ˜์ธ score๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋งค์ผ ๋ฐœํ‘œ๋œ ๋ช…์˜ˆ์˜ ์ „๋‹น์˜ ์ตœํ•˜์œ„ ์ ์ˆ˜๋ฅผ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

โ“ ์ œํ•œ ์กฐ๊ฑด

  • 3 ≤ k ≤ 100
  • 7 ≤ score์˜ ๊ธธ์ด ≤ 1,000
    • 0 ≤ score[i] ≤ 2,000

โ—๏ธ ์ž…์ถœ๋ ฅ ์˜ˆ

k score result
3 [10, 100, 20, 150, 1, 100, 200] [10, 10, 10, 20, 20, 100, 100]
4 [0, 300, 40, 300, 20, 70, 150, 50, 500, 1000] [0, 0, 0, 0, 20, 40, 70, 70, 150, 300]

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ์•„๋ž˜์™€ ๊ฐ™์ด, [0, 0, 0, 0, 20, 40, 70, 70, 150, 300]์„ returnํ•ฉ๋‹ˆ๋‹ค. 

๐Ÿ’ก ํ’€์ด

๐Ÿ“Œ ๊ธฐ๋ณธ ์•„์ด๋””์–ด

  • ๋ช…์˜ˆ์˜ ์ „๋‹น์—๋Š” k๊ฐœ์˜ ์ ์ˆ˜๋งŒ ์กด์žฌํ•ด์•ผํ•จ
    • ๋ช…์˜ˆ์˜ ์ „๋‹น(answer) ๋ฆฌ์ŠคํŠธ๊ฐ€ k ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ score ๋„ฃ๊ธฐ
    • ๋ช…์˜ˆ์˜ ์ „๋‹น(answer) ๋ฆฌ์ŠคํŠธ๊ฐ€ k ์ด์ƒ์ธ ๊ฒฝ์šฐ score ๋น„๊ตํ•ด์„œ ๋„ฃ๊ธฐ
      • k๋ฒˆ์งธ ์ˆœ์œ„์˜ ๊ฐ€์ˆ˜ ์ ์ˆ˜๋ณด๋‹ค ๋” ๋†’์œผ๋ฉด, ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋˜๊ณ  ๊ธฐ์กด์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ์ ์ˆ˜๋Š” ๋ช…์˜ˆ์˜ ์ „๋‹น์—์„œ ๋‚ด๋ ค์˜ค๊ฒŒ
        • k๋ฒˆ์งธ ์ˆœ์œ„ == ์ตœํ•˜์ (min)
        • ์ตœํ•˜์  ์ ์ˆ˜ ์‚ญ์ œ ํ›„ ์ƒˆ๋กœ์šด ์ ์ˆ˜ ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž…
  • ๋ฐœํ‘œ ์ ์ˆ˜๋Š” ํ•ญ์ƒ ๋ช…์˜ˆ์˜ ์ „๋‹น ๋‚ด ์ตœํ•˜์  ⇒ min ํ•จ์ˆ˜

 

๐Ÿ“Œ python code

def solution(k, score):
    answer = [] # ๋ช…์˜ˆ์˜ ์ „๋‹น
    final_answer = [] # ๋ฐœํ‘œ ์ ์ˆ˜
    
    for s in score :
    	# ๋ช…์˜ˆ์˜ ์ „๋‹น ๊ฐœ์ˆ˜ ํ™•์ธ
        if len(answer) < k :
            answer.append(s)
        else :
            # ๋ช…์˜ˆ์˜ ์ „๋‹น ์ตœํ•˜์ ๊ณผ ๋น„๊ต
            if s > min(answer) :
                answer.remove(min(answer))
                answer.append(s)
        final_answer.append(min(answer))
    return final_answer

 

๋Œ“๊ธ€