공부/코딩테스트
[프로그래머스 C++] 피로도
굥굔
2023. 4. 4. 09:43
< 해설 >
아니 테스트케이스는 틀렸는데 정확성 테스트는 다 맞음... 왜일까...? vs로 확인해보려고 함.
암튼 이것도 풀긴했어서 올림
저번 문제와 동일하게 while 문 안에서 next_permutation 함수를 이용했다. next_permutation 를 이용해서 벡터의 인자들을 섞어주고 for문을 돌면서 차례대로 몇개의 던전을 갈 수 있는지 확인한다.
무지성 코딩이 답일때도 있지만 시간초과로 걸릴까봐 중간에 피로도가 0이면 for문에서 벗어나도록 조건도 체크해줬다.
그리고 지날 수 있는 던전의 개수가 이 전 던전탐색 최대 개수보다 크면 갱신해주는 식으로 풀었다.
< 문제 >
< 풀이 >
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(int k, vector<vector<int>> dungeons) {
int answer = 0;
int Fatigue;
while (true)
{
int dungeonCount = 0;
Fatigue = k;
for(int i=0; i< dungeons.size(); i++)
{
if(dungeons[i][0] <= Fatigue)
{
dungeonCount++;
Fatigue -= dungeons[i][1];
}
if(Fatigue == 0)
break;
}
if(answer < dungeonCount)
answer = dungeonCount;
if (!(next_permutation(dungeons.begin(), dungeons.end())))
break;
}
return answer;
}