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
'๐งฉ Algorithm > [Programmers] Level 1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L1. ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ๊ธ์ (Python) (0) | 2024.11.06 |
|---|---|
| [Programmers] L1. ์ผ์ด์ฌ (Python) (0) | 2024.11.06 |
| [Programmers] L1. ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ๋ฌธ์์ด (Python) (0) | 2024.10.25 |
| [Programmers] L1. ๋ถ์กฑํ ๊ธ์ก ๊ณ์ฐํ๊ธฐ (Python) (0) | 2024.10.25 |
| [Programmers] L1. ๋ด์ (Python) (0) | 2024.10.25 |