문제
https://school.programmers.co.kr/learn/courses/30/lessons/87946
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
dfs 문제
던전을 전보다 더 많이 탐색할 경우 answer을 갱신해준다.
만약 던전을 모두 돌 방법을 찾아서 answer이 던전 개수와 같다면 더 볼 필요 없으니 return
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int>visit;
int answer=0;
void dfs(int index,int tired,int cnt,vector<vector<int>>dungeons)
{
if(answer<cnt){answer=cnt;}
if(answer==dungeons.size()){return;}
for(int i=0;i<dungeons.size();i++)
{
if(index==i||visit[i]!=0||tired<dungeons[i][0]) continue;
visit[i]=1;
dfs(i,tired-dungeons[i][1],cnt+1,dungeons);
visit[i]=0;
}
return;
}
int solution(int k, vector<vector<int>> dungeons)
{
visit=vector<int>(k,0);
for(int i=0;i<dungeons.size();i++)
{ dfs(i,k,0,dungeons); }
return answer;
}
'개발' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (1) | 2024.11.19 |
---|---|
플로이드 와샬 알고리즘(Floyd Warshall) (1) | 2024.11.18 |
[프로그래머스] 모의고사 (C++) (0) | 2024.11.16 |
다익스트라 알고리즘 (Dijkstra) (0) | 2024.11.15 |
포트포워딩 (0) | 2023.11.28 |