C++:: 프로그래머스 < 피로도 >

jahlee·2023년 4월 14일
0

프로그래머스_Lv.2

목록 보기
33/106
post-thumbnail

dfs방식으로 풀었다. 모든 경우의 수들중에서 방문횟수를 갱신하는 방법이다. 기존 dfs와는 형태가 조금 다르긴하지만 크게 어렵지않다.

#include <string>
#include <vector>
#include <cmath>

using namespace std;

int answer;
vector<bool> vis(8,false);

void dfs(int k, vector<vector<int>> dungeons)
{
    for(int i=0;i<dungeons.size();i++)
    {//모든 던전을 방문 할수있다면 방문
        if (!vis[i] && k >= dungeons[i][0])
        {//조건을 만족하고 방문 하지 않았다면
            vis[i] = true;
            dfs(k-dungeons[i][1], dungeons);
            vis[i] = false;
        }
    }
    int cleared = 0;
    for(auto c : vis) if(c) cleared++;//클리어한 던전개수 체크
    answer = max(answer, cleared);//갱신
}

int solution(int k, vector<vector<int>> dungeons)
{
    dfs(k, dungeons);
    return answer;
}

0개의 댓글