반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/87946
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
풀이 및 코드
dfs를 이용하여 문제를 풀었습니다.
dfs를 이용하여 풀었는데 그것이 만약 유저가 탐험할 수 있는 최대의 던전의 수 보다 크다면 갱신을 하는 형태로 진행하였습니다.
/*
일정 피로도를 사용해서
최소 필요 피로도 소모 피로도
dungeons -> 최소필요 피로도, 소모 피로도
k - > 현재 피로도
던전의 개수 1이상 8이하
*/
#include <string>
#include <vector>
using namespace std;
int visited[8] ={0,};
int answer = 0;
void dfs(int cnt, int energy, vector<vector<int>> dungeons,int *minTired, int *useTired);
int solution(int k, vector<vector<int>> dungeons) {
int min_tired[8];
int use_tired[8];
int num = dungeons.size();
for(int i = 0 ; i <dungeons.size();i++){
min_tired[i] = dungeons[i][0];
use_tired[i] = dungeons[i][1];
}
dfs(0,k,dungeons,min_tired,use_tired);
return answer;
}
void dfs(int cnt, int energy,vector<vector<int>> dungeons,int *minTired, int *useTired){
for(int i =0; i < dungeons.size();i++){
if(!visited[i] && minTired[i] <= energy){
visited[i] = true;
dfs(cnt+1,energy - useTired[i], dungeons, minTired, useTired);
visited[i] = false;
}
}
answer = answer > cnt ? answer : cnt;
}
반응형
'알고리즘 > c++ 프로그래머스' 카테고리의 다른 글
[프로그래머스 전화번호 목록] c++ (코드, 풀이, 개념) (0) | 2023.05.17 |
---|---|
[프로그래머스 타겟넘버] c++ (코드, 풀이, 개념) (0) | 2023.05.17 |
[프로그래머스 할인행사] c++ (코드 및 풀이) (1) | 2023.05.15 |
[프로그래머스 뉴스 클러스터링, 2018 카카오] c++ (풀이 및 코드) (0) | 2023.05.15 |
[프로그래머스 프로세스] c++ (풀이, 코드) (0) | 2023.05.14 |
댓글