반응형
라이언이 점수를 획득하려면 어피치가 쏜 것보다 무조건 하나이상 더 쏴야한다.
나는 그 점을 생각하여 풀었다.
근데 추천 수를 가장 많이 받은 다른 사람의 풀이를 확인해보니, 그냥 N 발을 전체 다 하나씩 탐색하는 경우로 푸셨다.
아마 내 풀이보다는 오래 걸릴 것으로 생각된다..!!
#include <string>
#include <vector>
using namespace std;
vector<int> lions(11, 0); // lion의 과녁
vector<int> ans;
int maxGap;
// shot : 남은 발 수
void dfs(int n, vector<int>& info, int index, int shot, int scoreLion, int scoreAppeach) {
if(index < 0) {
int gap = scoreLion - scoreAppeach;
if(maxGap < gap) {
maxGap = gap;
ans = lions;
if(shot > 0) // 남은 발 수가 있으면 0점에 채워넣음
ans[10] = shot;
}
return;
}
// 맞추기
if(shot >= (info[index] + 1)) {
lions[index] = info[index] + 1;
dfs(n, info, index - 1, (shot - (info[index] + 1)), scoreLion + (10 - index), scoreAppeach);
lions[index] = 0;
}
// 안맞추고 넘기기
if(info[index] > 0) {
dfs(n, info, index - 1, shot, scoreLion, scoreAppeach + (10 - index));
} else {
dfs(n, info, index - 1, shot, scoreLion, scoreAppeach);
}
}
vector<int> solution(int n, vector<int> info) {
vector<int> answer;
dfs(n, info, 9, n, 0, 0);
if(ans.empty()) return {-1}; else return ans;
}
반응형
'[프로그래머스]' 카테고리의 다른 글
프로그래머스 순위 검색 C++ (0) | 2023.10.02 |
---|---|
프로그래머스 행렬 테두리 회전하기 C++ (0) | 2023.09.20 |
프로그래머스 k진수에서 소수 개수 구하기 C++ (0) | 2023.09.18 |
프로그래머스 혼자 놀기의 달인 C++ (1) | 2023.09.17 |
프로그래머스 디펜스 게임 C++ (0) | 2023.09.15 |