728x90
난이도 : Lv. 2
풀이일 : 2412231
https://school.programmers.co.kr/learn/courses/30/lessons/87946?language=python3
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제


풀이 코드
def solution(k, dungeons):
answer = -1
visited = [False] * len(dungeons)
def DFS(s, hp, depth):
nonlocal answer
if answer < depth:
answer = depth
for i in range(len(dungeons)):
if not visited[i] and hp >= dungeons[i][0]:
visited[i] = True
DFS(i, hp - dungeons[i][1], depth + 1)
visited[i] = False
return
for i in range(len(dungeons)):
DFS(i, k, 0)
return answer
제출 결과

느낀점
- 코드가 마음에 안들어서 설명은 나중에 쓸래ㅠ
개선 코드
def solution(k, dungeons):
answer = -1
visited = [False] * len(dungeons)
def DFS(hp, depth):
nonlocal answer
if answer < depth:
answer = depth
for i in range(len(dungeons)):
if not visited[i] and hp >= dungeons[i][0]:
visited[i] = True
DFS(hp - dungeons[i][1], depth + 1)
visited[i] = False
return
DFS(k, 0)
return answer
수정 내용
- DFS를 처음 호출 할 때 for 반복문으로 호출할 필요가 없어서 수정
- DFS에 s는 필요가 없어서 삭제
제출 결과

이전 코드보다 훨씬 훨씬 빨라짐!
'알고리즘 > Lv. 2' 카테고리의 다른 글
프로그래머스 87946 피로도 자바스크립트 풀이 (0) | 2024.12.24 |
---|---|
프로그래머스 87946 피로도 자바 풀이 (1) | 2024.12.24 |
프로그래머스 42626 더 맵게 파이썬 풀이 (1) | 2024.12.20 |
프로그래머스 42746 가장 큰 수 파이썬 풀이 (1) | 2024.12.16 |
프로그래머스 12978 배달 파이썬 풀이 (0) | 2024.12.16 |