본문 바로가기
Programming Solve/프로그래머스

프로그래머스 - 피로도 / C++

by msm1029 2022. 4. 12.
반응형

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/87946 

 

코딩테스트 연습 - 피로도

XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던

programmers.co.kr

 

 

풀이

주어진 던전들을 순열로 돌며 직접 카운트해주면 된다.

순열을 사용하기 위해 정렬을 해줘야한다.

 

각 경우의 수마다 필요 피로도보다 현재 피로도가 크면 현재 피로도에서 소모 피로도를 빼주는 연산을 수행하고

카운트를 센 뒤 max를 통해 최댓값을 갱신한다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int solution(int k, vector<vector<int>> dungeons) {
    int answer = 0;
    sort(dungeons.begin(), dungeons.end());
    
    do {
        int tmp = k, cnt = 0;
        for(int i=0; i<dungeons.size(); i++){
            if(tmp >= dungeons[i][0]){
                cnt++;
                tmp -= dungeons[i][1];
            }
            else break;
        }
        
        answer = max(answer, cnt);
        
    } while(next_permutation(dungeons.begin(), dungeons.end()));
    
    return answer;
}
반응형