4. 양궁대회
알게 된점
- 객체를 복사하는 유형은 깊은 복사, 얕은 복사가 있음
- 깊은 복사 : 복사된 배열이나 원본배열이 변경될 때 서로 간의 값은 바뀌지 않음
int[] a = { 1, 2, 3, 4 };
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i];
}
int[] a = { 1, 2, 3, 4 };
int[] b = a.clone();
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOf(a, a.length);
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOfRange(a, 1, 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]) {
lion[j]++;
dfs(l+1);
lion[j]--;
} else {
break;
}
}
}
}
public int[] solution(int n, int[] info) {
apeech=info.clone();
nn=n;
lion=new int[11];
dfs(0);
return res;
}
}
참고