카테고리 없음
프로그래머스 양궁대회 (JAVA)
왕구스
2022. 1. 24. 22:37
2022 KAKAO BLIND RECRUITMENT > 양궁대회
https://tech.kakao.com/2022/01/14/2022-kakao-recruitment-round-1/
2022 카카오 신입공채 1차 온라인 코딩테스트 for Tech developers 문제해설
지난 2021년 9월 11일 토요일 오후 2시부터 7시까지 5시간 동안 2022 KAKAO BLIND RECRUITMENT 1차 코딩 테스트가 진행되었습니다. 테스트에는 총 7개의 문제가 출제되었으며, 개발 언어는 C++, Java, JavaScript, K
tech.kakao.com
https://programmers.co.kr/learn/courses/30/lessons/92342
코딩테스트 연습 - 양궁대회
문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원
programmers.co.kr
static int[] apeach;
static int N;
static int max = Integer.MIN_VALUE;
static List<Result> res = new ArrayList<>();
public static int[] solution(int n, int[] info) {
N = n;
apeach = info;
shoot(0, 0, new int[11]);
if (res.isEmpty()) {
return new int[]{-1};
}
Collections.sort(res);
return res.get(0).target;
}
private static void shoot(int cnt, int idx, int[] lion) {
if (cnt == N) {
compareScore(lion);
return;
}
for (int i = idx; i < 11; i++) {
lion[i]++;
shoot(cnt + 1, i, lion);
lion[i]--;
}
}
private static void compareScore(int[] lion) {
int aScore = 0;
int lScore = 0;
for (int i = 0; i < apeach.length; i++) {
if (apeach[i] == 0 && lion[i] == 0) {
continue;
}
if (apeach[i] >= lion[i]) {
aScore += 10 - i;
} else {
lScore += 10 - i;
}
}
if (lScore > aScore) {
int diff = lScore - aScore;
if (diff > max) {
max = diff;
res.clear();
res.add(new Result(Arrays.copyOf(lion, 11)));
} else if (diff == max) {
res.add(new Result(Arrays.copyOf(lion, 11)));
}
}
}
static class Result implements Comparable<Result> {
int[] target;
public Result(int[] target) {
this.target = target;
}
@Override
public int compareTo(Result o) {
for (int i = target.length - 1; i >= 0; i--) {
if (target[i] != o.target[i]) {
return o.target[i] - target[i];
}
}
return 0;
}
}