09009
*** [프로그래머스 lv2] 피로도 본문
문제 보기
https://school.programmers.co.kr/learn/courses/30/lessons/87946
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 해결
난 순열 조합으로 문제 풀이를 하였지만 백트래킹으로 푸는 방법도 있었다.
기업 코딩테스트에 많이 나오는 풀이법이라고 하니 꼭 알아두자.
소스 코드
from itertools import permutations
def solution(k, dungeons):
answer = 0
for per in permutations(dungeons, len(dungeons)):
tmp_k = k
count = 0
for p in per:
if tmp_k >= p[0]:
tmp_k -= p[1]
count += 1
answer = max(answer, count)
return answer
- 백트래킹 풀이법
def solution(k, dungeons):
global answer
answer = 0
n = len(dungeons)
visited = [False] * n
tmp_k = k
def dfs(tmp_k, cnt):
global answer
if cnt > answer:
answer = cnt
for i in range(n):
if tmp_k >= dungeons[i][0] and not visited[i]:
visited[i] = True
dfs(tmp_k - dungeons[i][1], cnt + 1)
visited[i] = False
dfs(k, 0)
return answer
'Algorithm > 완전탐색' 카테고리의 다른 글
[백준 15649] N과 M (1) (0) | 2023.12.20 |
---|---|
[프로그래머스 lv1] 최소 직사각형 (0) | 2023.09.23 |
Comments