https://programmers.co.kr/learn/courses/30/lessons/92342
코딩테스트 연습 - 양궁대회
문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원
programmers.co.kr
나의 코드
#include <string>
#include <vector>
using namespace std;
int max_score = 0;
vector<int> apeach, answer;
int is_win(vector<int>& lion) {
int score = 0;
for (int i = 0; i < lion.size(); i++) {
if (lion[i] > 0 || apeach[i] > 0) {
if (lion[i] > apeach[i]) {
score += (10 - i);
}
else {
score -= (10 - i);
}
}
}
return score;
}
void check(int n, int i, vector<int> visited) {
if (n <= 0 || i < 0) {
int score = is_win(visited);
if (score > max_score) {
if (n > 0) {
visited[10] = n;
}
answer.assign(visited.begin(), visited.end());
max_score = score;
}
return;
}
for (int k = i; k >= 0; k--) {
if (n > apeach[k]) {
vector<int> tmp;
tmp.assign(visited.begin(), visited.end());
tmp[k] = apeach[k] + 1;
check(n - (apeach[k] + 1), k - 1, tmp); //이길경우
}
check(n, k - 1, visited); //질경우
}
}
vector<int> solution(int n, vector<int> info) {
apeach.assign(info.begin(), info.end());
vector<int> tmp(11);
check(n, 9, tmp);
if (max_score <= 0) return { -1 };
return answer;
}'전공공부 > 코딩테스트' 카테고리의 다른 글
| (c++) 프로그래머스 "2628) 종이자르기" (0) | 2022.04.24 |
|---|---|
| (c++) 프로그래머스 "JadenCase 문자열 만들기" (0) | 2022.04.24 |
| (c++) 백준 "1244 : 스위치 켜고 끄기" (0) | 2022.04.22 |
| (c++) 프로그래머스 "N개의 최소공배수" (0) | 2022.04.22 |
| (c++) 프로그래머스 "행렬의 곱셈" (0) | 2022.04.21 |