プログラマーアルゴリズム解答-Kaco 2022-第4題
15981 ワード
4.アーチェリー大会
知るところ
コピーオブジェクトのタイプは、深いコピー、浅いコピー です.複製:複製アレイまたは元のアレイが変更された場合、それらの間の値は のままになります.浅いレプリケーション:レプリケーションされたアレイまたは元のアレイが変更されると、その値は とともに変更されます. backtrack&DFS ソースコード https://velog.io/@qodlstjd12/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Kakao-%EC%96%91%EA%B6%81-%EB%8C%80%ED%9A%8C-Java https://coding-factory.tistory.com/548
知るところ
コピー
// 방법 1.
int[] a = { 1, 2, 3, 4 };
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i];
}
// 방법 2. clone() 메소드 이용
int[] a = { 1, 2, 3, 4 };
int[] b = a.clone();
// 방법 3. Arrays.copyOf()
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOf(a, a.length);
// 방법 4. Arrays.copyOfRange()
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOfRange(a, 1, 3); //[2,3]
int[] a = { 1, 2, 3, 4 };
int[] b = a;
解決策class Solution {
static int nn;
static int apeech[];
static int lion[];
static int res[]={-1};
static int max=-10000;
public void dfs(int l) {
if (l==nn) { // 종료
int a_point=0;
int l_point=0;
for (int i=0;i<11;i++) {
if (apeech[i]!=0 || lion[i]!=0) {
if (lion[i]>apeech[i]) {
l_point+=10-i; // 라이언이 점수 가져감
}else {
a_point+=10-i;
}
}
}
if (l_point>a_point) { // 값 갱신
if (l_point-a_point>=max) {
max=l_point-a_point;
res=lion.clone();
}
}
}else {
for (int j=0;j<11;j++) {
if (lion[j]<=apeech[j]) { //작거나 같을경우에만 돌림, 라이언이 더 커지면 dfs를 더 돌 필요없음.
lion[j]++;
dfs(l+1);
lion[j]--;
} else {
break;
}
}
}
}
public int[] solution(int n, int[] info) {
// int[] answer = {};
apeech=info.clone();
nn=n;
lion=new int[11];
dfs(0);
return res;
}
}
リファレンスReference
この問題について(プログラマーアルゴリズム解答-Kaco 2022-第4題), 我々は、より多くの情報をここで見つけました https://velog.io/@sds1vrk/프로그래머스-알고리즘-문제-풀이-카카오-2022-4번-문제풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol