프로그래머스 Level 2 - 양궁대회
📌 문제 설명
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2F8d2084d1-8d2c-4383-8e85-e52db9e3fb48%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.03.55.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2F54552ac0-327e-47e9-bbe6-80e70744b9d3%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.04.16.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2Fbac24520-c399-4bc0-a046-4b728f86efe6%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.04.35.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2Fb9ecf9ed-8c3d-4a24-a6e9-7ac323b41117%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.04.52.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2F013c24ee-74d9-4a4e-a02b-67c36a49f6d6%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.05.10.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2Ff7a44bfc-0314-42a2-b736-b669f7a10bd8%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.05.40.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2Fc2da0ae7-8ad0-41c1-b327-63bbd57bcfd7%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.06.04.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2Fc5e29da6-e844-478f-8b9d-006ecdfbe2e6%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.06.30.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2F61146548-d237-4ece-824c-f7caa38f3ae5%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-20%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.06.45.png)
📌 생각한 풀이 방법
- 0포인트 부터 나올수 있는 모든 경우를 탐색한다
1-1. 라이언이 이겨 포인트를 얻는 경우
1-2. 어피치가 이겨 포인트를 얻는 경우
1-3. 둘다 점수를 얻지 못하는 경우
- 10포인트까지 모든 경우를 탐색한 후, 해당 경우의 포인트 차이가 maxCount보다 큰 경우,
해당 포인트 차이를 maxCount에 저장하고, 해당 경우를 answer에 저장한다.
📌 풀이
function solution(n, info) {
let answer = Array(11).fill(0);
let maxCount = 0;
function findMaxPoint(apeachCount, ryanCount, usedShots, point, arr) {
if (n < usedShots) return;
if (point > 10) {
let diff = ryanCount - apeachCount;
if (maxCount < diff) {
arr[10] = n - usedShots;
maxCount = diff;
answer = arr;
}
return;
}
if (n > usedShots) {
let current = [...arr];
current[10 - point] = info[10 - point] + 1;
findMaxPoint(
apeachCount,
ryanCount + point,
usedShots + info[10 - point] + 1,
point + 1,
current
);
}
if (info[10 - point] > 0) {
findMaxPoint(apeachCount + point, ryanCount, usedShots, point + 1, arr);
} else {
findMaxPoint(apeachCount, ryanCount, usedShots, point + 1, arr);
}
}
findMaxPoint(0, 0, 0, 0, answer);
return maxCount <= 0 ? [-1] : answer;
}