**참고사이트 : https://jaehee1007.tistory.com/85




using System;
using System.Collections.Generic;
public class Solution {
public int[] arr = new int[11];
public int[] solution(int n, int[] info)
{
int max = 0;
Dictionary<int, int> lionDic = new Dictionary<int, int>();
Dictionary<int, int> apeechDic = new Dictionary<int, int>();
for (int i = 0; i < info.Length; i++)
{
apeechDic.Add(10 - i, info[i]);
lionDic.Add(10 - i, 0);
}
DFS(n, 10,lionDic, apeechDic,ref max);
int[] answer = max <= 0 ? new int[] { -1 } : (int[])arr.Clone();
return answer;
}
public void DFS(int n, int curIndex, Dictionary<int, int> lionDic, Dictionary<int, int> apeechDic, ref int max)
{
if (n == 0)
{
Winer(lionDic, apeechDic, ref max);
return;
}
if (curIndex < 0)
{
lionDic[0] = n;
Winer(lionDic, apeechDic, ref max);
lionDic[0] = 0;
return;
}
if (apeechDic[curIndex] < n)
{
lionDic[curIndex] = apeechDic[curIndex] + 1;
DFS(n - (apeechDic[curIndex] + 1), curIndex - 1, lionDic, apeechDic,ref max);
lionDic[curIndex] = 0;
}
DFS(n, curIndex - 1, lionDic, apeechDic, ref max);
}
public void Winer(Dictionary<int,int> lionDic, Dictionary<int,int> apeechDic,ref int max)
{
List<int> sumList = new List<int>();
int[] lionArr = new int[11];
int sum = 0;
for (int i = 0; i < apeechDic.Count; i++)
{
if (lionDic[i] == 0 && apeechDic[i] == 0)
{
lionArr[i] = 0;
sumList.Add(0);
}
else if (lionDic[i] <= apeechDic[i])
{
lionArr[i] = lionDic[i];
sumList.Add(-i);
}
else
{
lionArr[i] = lionDic[i];
sumList.Add(i);
}
}
var sample = (int[])lionArr.Clone();
for(int i = 0; i < lionArr.Length; i++)
{
lionArr[i] = sample[10 - i];
}
for(int i = 0; i < sumList.Count; i++)
{
sum += sumList[i];
}
if(sum > max)
{
max = sum;
arr = (int[])lionArr.Clone();
}
else if(sum == max)
{
for(int i = lionArr.Length - 1; i >= 0; i--)
{
if (arr[i] < lionArr[i])
{
arr = (int[])lionArr.Clone();
break;
}
else if(arr[i] > lionArr[i])
break;
}
}
}
}