[프로그래머스 - JAVA] 양궁대회
2024. 9. 22. 01:17ㆍAlgorithm
문제 풀이
- 0점씩인 경우 생략 (결과 배열 값을 말함)
- 어피치가 라이언 보다 점수가 같거나 크면 어피치 승리
- 동일한 점수 차이로 승리 경우 수가 많은 경우 가장 작은 점수들로 승리한 경우를 반환
1번 조건의 경우 점수 계산 함수에서 처리
2번 조건의 경우도 점수 계산 함수에서 처리
3번 조건의 경우 화살 배당시 0점부터 시작해 처리
문제 정답
class Solution {
static int[] lion_info, answer;
static int MAX_SCORE = Integer.MIN_VALUE;
public int[] solution(int n, int[] info) {
answer = new int[] { -1 };
lion_info = new int[11];
dfs(info, 1, n);
return answer;
}
static void dfs(int[] info, int arrows, int n) {
if (arrows == n + 1) {
int apeach_score = 0;
int lion_score = 0;
for (int i = 0; i < 11; i++) {
if (info[i] == 0 && lion_info[i] == 0) continue;
if (info[i] < lion_info[i]) lion_score += 10 - i;
else apeach_score += 10 - i;
}
// lion_score가 apeach_score보다 크고 MAX_VALUE 보다 크면 갱신
if (lion_score > apeach_score) {
if (lion_score - apeach_score >= MAX_SCORE) {
MAX_SCORE = lion_score - apeach_score;
answer = lion_info.clone();
}
}
return;
}
// 화살을 쏴 점수 계산
for (int i = 0; i <= 10 && lion_info[i] <= info[i]; i++) {
lion_info[i]++;
dfs(info, arrows + 1, n);
lion_info[i]--;
}
}
}
'Algorithm' 카테고리의 다른 글
[프로그래머스 - JAVA] 아이템 줍기 (0) | 2024.10.11 |
---|---|
[2294 - JAVA] 동전 2 (1) | 2024.10.06 |
[프로그래머스 - JAVA] 단어 변환 (0) | 2024.09.15 |
[프로그래머스 - JAVA] 다리를 지나는 트럭 (0) | 2024.08.31 |
[프로그래머스 - JAVA] 전력망을 둘로 나누기 (0) | 2024.08.29 |