어흥
[프로그래머스] 피로도 (C++) 본문
728x90
반응형
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/87946
1. 주의할 점
- 최소 피로도 ≥ 소모 피로도
2. 구현
- 최소 피로도를 needEnergy[] 배열에 담는다
- 소모 피로도를 useEnergy[] 배열에 담는다
- check[] 배열을 통해 던전 탐험 유무를 체크한다
- DFS()를 수행하며 남은 피로도가 최소 피로도 이상이며, 탐험하지 않은 던전인 경우, 탐험을 한다
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int needEnergy[8];
int useEnergy[8];
bool check[8]={false,};
int num;
int result=0;
void dfs(int cnt, int remain){
for(int i=0;i<num;i++){
if(!check[i] && needEnergy[i]<=remain){
check[i]=true;
dfs(cnt+1,remain-useEnergy[i]);
check[i]=false;
}
}
result = max(result,cnt);
return;
}
int solution(int k, vector<vector<int>> dungeons) {
int answer = -1;
num = dungeons.size();
for(int i=0;i<num;i++){
needEnergy[i] = dungeons[i][0];
useEnergy[i] = dungeons[i][1];
}
dfs(0,k);
return answer = result;
}
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 카펫 (C++) (0) | 2021.12.02 |
---|---|
[프로그래머스] 빛의 경로 사이클 (C++) (0) | 2021.11.12 |
[프로그래머스] 아이템 줍기 (C++) (0) | 2021.10.22 |
[프로그래머스] 교점에 별 만들기 (C++) (0) | 2021.10.13 |
[프로그래머스] 전력망을 둘로 나누기 (C++) (0) | 2021.10.06 |
Comments