문제 원본 : https://programmers.co.kr/learn/courses/30/lessons/92342
코딩테스트 연습 - 양궁대회
문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원
programmers.co.kr
public class Solution {
int[] answer = {-1};
int[] ryan;
int max;
public int[] solution(int n, int[] info) {
ryan = new int[11];
solve(0, n, info);
return answer;
}
public void solve(int idx, int n, int[] info) {
if (idx == 11 || n == 0) {
int ryanScore = 0;
int apeachScore = 0;
for (int i = 0; i <= 10; ++i) {
if (ryan[i] > info[i]) {
ryanScore += 10 - i;
} else if (info[i] != 0) {
apeachScore += 10 - i;
}
}
if (ryanScore - apeachScore > max) {
max = ryanScore - apeachScore;
answer = ryan.clone();
} else if (max != 0 && ryanScore - apeachScore == max) {
for (int i = 10; i >= 0; --i) {
if (answer[i] < ryan[i]) {
answer = ryan.clone();
break;
} else if (answer[i] > ryan[i]) {
break;
}
}
}
return;
}
if (n >= info[idx] + 1) {
ryan[idx] = info[idx] + 1;
solve(idx + 1, n - (info[idx] + 1), info);
} else {
ryan[idx] = n;
solve(idx + 1, 0, info);
}
ryan[idx] = 0;
solve(idx + 1, n, info);
}
}
- 2022 카카오 블라인드 코딩 테스트 4번
- 백 트래킹 문제
- 라이언이 쏠 화살은 해당 점수의 어피치가 쏜 개수 + 1 이거나 안 쏘거나 둘 중 하나
- 신경 쓸 부분은 답이 여러 개일 경우 가장 낮은 점수를 더 많이 맞힌 경우를 리턴하는 부분
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 2022 KAKAO BLIND RECRUITMENT > 3. 주차 요금 계산 (0) | 2022.02.13 |
|---|---|
| [프로그래머스] 2022 KAKAO BLIND RECRUITMENT > 2. k진수에서 소수 개수 구하기 (0) | 2022.02.13 |
| [프로그래머스] 2022 KAKAO BLIND RECRUITMENT > 1. 신고 결과 받기 (0) | 2022.02.13 |