hwooo
프로그래머스 (C/C++) 87946 : 피로도 본문
https://school.programmers.co.kr/learn/courses/30/lessons/87946
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr


풀이
던전의 개수가 최대 8개이므로 모든 경우의 수를 확인하며 가장 많은 던전을 도는 경우를 찾았다.
이 때 DFS로 탐색하며 현재 탐색한 던전의 개수를 저장하고, 최댓값과 비교하며 갱신한다.
코드
#include <string>
#include <vector>
using namespace std;
bool visited[10];
int maxCnt = -1;
void dfs(vector<vector<int>>& dungeon, int k, int cnt) {
for (int i = 0; i < dungeon.size(); i++) {
auto d = dungeon[i];
// 이미 방문함 || 현재 피로도 < 최소 필요 피로도
if (visited[i] || k < d[0]) continue;
visited[i] = true;
dfs(dungeon, k - d[1], cnt + 1);
visited[i] = false;
}
maxCnt = max(maxCnt, cnt);
}
int solution(int k, vector<vector<int>> dungeons) {
dfs(dungeons, k, 0);
return maxCnt;
}'Study > Algorithm' 카테고리의 다른 글
| LeetCode (C/C++) 611. Valid Triangle Number (0) | 2024.10.24 |
|---|---|
| 프로그래머스 (C/C++) 132265 : 롤케이크 자르기 (0) | 2024.10.22 |
| LeetCode (C/C++) 152. Maximum Product Subarray (0) | 2024.10.17 |
| LeetCode (C/C++) 347. Top K Frequent Elements (0) | 2024.10.17 |
| LeetCode (C/C++) 456. 132 Pattern (0) | 2024.10.16 |