https://school.programmers.co.kr/learn/courses/30/lessons/87946
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ๋ฅผ ๋ณด๋๊น Greedy๋ก๋ ํ ์ ์๊ณ , ๋ฑํ ์ต์ ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก ์ ๋ ฌํ ์๋ ์์๋ค.
๊ทธ๋์ ์์ ํ์์ผ๋ก ํ๊ธฐ๋ก ํ๋๋ฐ,
์ฃผ์ด์ง ๋์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋งค์ฐ ์์ ๊ฑธ๋ก ๋ด์ ์๊ฐ์ด๊ณผ๊ฐ ๋์ง๋ ์์ ๊ฒ ๊ฐ์๋ค.
๊ฐ๋จํ๊ฒ ๋์ ๋ฆฌ์คํธ ์์๋ค์ ๊ฐ์ง๊ณ ์์ด์ ๋ง๋ค์ด์ฃผ์๋ค.
๋งค ์์๋ง๋ค ํํํ ์ ์๋ ๋์ ์ ์๋ฅผ ๊ณ์ฐํ๊ณ ๊ทธ ์ค ์ต๋๊ฐ์ ๋ฆฌํดํ์๋ค.
python
from itertools import permutations
def calc(k, ordered_lst):
result = 0
for a, b in ordered_lst:
if a > k or b > k:
return result
k -= b
result += 1
return result
def solution(k, dungeons):
answer = 0
for order in list(permutations(dungeons)):
answer = max(answer, calc(k, order))
return answer
๋ถ๋ช ํ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ๋ง์ ๊ฒ ๊ฐ์ ๋ค๋ฅธ ๋ถ๋ค ํ์ด๋ฅผ ์ฝ์ด๋ณด์๋ค.
๋์ฒ๋ผ ์์ด์ ๊ตฌํด์ ํผ ๋ถ๋ค๋ ๊ฝค ๋ณด์์ง๋ง dfsํ์ด๊ฐ ๋งค์ฐ ๋ง์๋ค.
๋ณด๊ณ ๋ง์ด ๋ฐฐ์ด ์ฝ๋์ด๋ค.
answer = 0
N = 0
visited = []
def dfs(k, cnt, dungeons):
print(k, cnt, ":")
global answer
answer = max(answer, cnt)
for j in range(N):
print("j : ",j)
if k >= dungeons[j][0] and not visited[j]:
visited[j] = 1
dfs(k-dungeons[j][1], cnt+1, dungeons)
visited[j] = 0
def solution(k, dungeons):
global N, visited
N = len(dungeons)
visited = [0] * N
dfs(k, 0, dungeons)
return answer
์ด๋ฐ ๋ฌธ์ ๋ ์ฌ๋ฌ ๋ฒ ํ์ด๋ด์ผ๊ฒ ๋ค.
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]5566๋ฒ: ์ฃผ์ฌ์ ๊ฒ์ (0) | 2023.03.21 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (0) | 2023.03.21 |
[๋ฐฑ์ค]1522๋ฒ: ๋ฌธ์์ด ๊ตํ (0) | 2023.03.19 |
[๋ฐฑ์ค]1026๋ฒ: ๋ณด๋ฌผ (0) | 2023.03.17 |
[๋ฐฑ์ค]1205๋ฒ: ๋ฑ์ ๊ตฌํ๊ธฐ (0) | 2023.03.15 |