๐Ÿงฉ Algorithm/[Programmers] Level 1

[Programmers] L1. ์˜ˆ์‚ฐ (Python)

devCloud 2024. 10. 30. 10:54
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ’€์ด

1๏ธโƒฃ ์ •๋ ฌ

  • ๋ฆฌ์ŠคํŠธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
  • ์˜ˆ์‚ฐ ๋‚ด์—์„œ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์š”์ฒญ์„ ์ง€์›ํ•˜๋ ค๋ฉด, ์ž‘์€ ๊ธˆ์•ก๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.
  • ์ž‘์€ ์š”์ฒญ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•ด ์˜ˆ์‚ฐ์„ ์กฐ๊ธˆ์”ฉ ์†Œ์ง„ํ•ด ๋‚˜๊ฐ€๋ฉด ๋” ๋งŽ์€ ํ•ญ๋ชฉ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2๏ธโƒฃ ์˜ˆ์‚ฐ ์ฐจ๊ฐ ๋ฐ ์ง€์› ํ•ญ๋ชฉ ์ฆ๊ฐ€

  • ์ •๋ ฌ๋œ ๊ธˆ์•ก๋“ค์„ ํ•˜๋‚˜์”ฉ ์ˆœํšŒํ•˜๋ฉฐ budget์—์„œ ์ฐจ๊ฐํ•œ๋‹ค.
  • budget์ด 0๋ณด๋‹ค ์ž‘์•„์ง€๋Š” ์ˆœ๊ฐ„, ํ˜„์žฌ ์˜ˆ์‚ฐ์œผ๋กœ๋Š” ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋„๋ก ํ•œ๋‹ค. ์ด๋•Œ ๋ฃจํ”„๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.
  • ๋งŒ์•ฝ budget์ด 0๋ณด๋‹ค ์ž‘์•„์ง€์ง€ ์•Š์œผ๋ฉด, ์ง€์› ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์˜ ์ˆ˜(answer)๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 

Solution

def solution(d, budget):
    answer = 0
    d = sorted(d)
    for i in d:
        budget -= i
        if budget < 0:
            budget += i
            break
        else:
            answer += 1
    return answer

 

์ฝ”๋“œ ๊ฐœ์„ ์ 

ํ•œ ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์€, ์˜ˆ์‚ฐ์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์กฐ๊ฑด์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

for i in d:
    if budget - i < 0:
        break
    budget -= i
    answer += 1

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ์˜ˆ์‚ฐ ์ดˆ๊ณผ ์‹œ ๋‹ค์‹œ budget์— ๋”ํ•˜๋Š” ๊ณผ์ • ์—†์ด ๋ฐ”๋กœ break๋กœ ์ข…๋ฃŒ๋œ๋‹ค.

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

์‹œ๊ฐ„ ์ดˆ๊ณผ ์ฝ”๋“œ

from itertools import combinations

def solution(d, budget):
    answer = 0
    for i in range(1, len(d) + 1):
        for j in combinations(d, i):
            if sum(j) <= budget: #์˜ˆ์‚ฐ ์ดํ•˜ ๊ฒƒ๋งŒ ํ™•์ธ
                answer = max(len(j), answer)
    return answer
  • ์ด ์ฝ”๋“œ์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๋ถ€์„œ ์กฐํ•ฉ์„ ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • for i in range(1, len(d) + 1): ์ด ๋ถ€๋ถ„์—์„œ ๋ชจ๋“  ์กฐํ•ฉ์˜ ๊ธธ์ด๋ฅผ ํ•˜๋‚˜์”ฉ ๋Š˜๋ ค๊ฐ€๋ฉฐ ํ™•์ธํ•œ๋‹ค.
  • combinations(d, i)๋Š” d์˜ ์š”์†Œ์—์„œ i๊ฐœ๋ฅผ ๋ฝ‘์•„ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ๋งŒ๋“œ๋Š”๋ฐ, ๊ฐ ๊ธธ์ด์— ๋Œ€ํ•ด ์กฐํ•ฉ ๊ฐœ์ˆ˜๋Š” ๋งค์šฐ ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ n์ผ ๋•Œ ์กฐํ•ฉ์€ 2^n ๊ฐœ์— ๊ฐ€๊นŒ์›Œ์ง€๋ฉฐ, ๊ฐ ์กฐํ•ฉ์— ๋Œ€ํ•ด ํ•ฉ์„ ๊ตฌํ•˜๋ฏ€๋กœ ๋ณต์žก๋„๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค.

 

728x90