public String solution(int[] food) {
String answer = "";
int arrLen = 1;
for(int i=1; i<food.length;i++) {
if(food[i]%2==1) {
food[i]=food[i]-1;
arrLen+=food[i];
} else {
arrLen+=food[i];
}
}
int[] intArr = new int[arrLen];
int a = 0;
for(int i=0;i<food.length-1;i++) {
for(int j=0;j<food[i+1]/2;j++) {
intArr[i+j+a]=i+1;
intArr[arrLen-1-i-j-a]=i+1;
}
a+=food[i+1]/2-1;
}
for(int i=0;i< intArr.length;i++) {
answer+=String.valueOf(intArr[i]);
}
return answer;
}
복잡해지는 것이 싫어서 일단 food를 모두 짝수로 바꿨다. ( food[0] 빼고) -> food[x]/2 하면 x-1이 삽입되는 회수가 됨.
그러면서 동시에 답안의 총 길이인 arrLen을 입력했다. (항상 0이 하나 있으니 1로 초기화)
이것으로 int 배열을 만들어서 여기에 값 대입.
근데 앞, 뒤로 균일하게 들어가야하므로 intArr[x], intArr[arr-x] 를 생각해볼 수 있다.
(1) 여기서 intArr에 1을 food[1]/2 번 넣어야 하고,
그 다음엔 intArr에 삽입된 다음 배열부터 2를 food[2]/2 번, ...
food[x]/2 번 넣는거야 이중for문 돌리면서 intArr[i+j] 하면 되는데,
삽입된 다음칸을 알아내는건 어떻게해야할까 고민했는데 결국 index로 a를 만들었다.
그 후에 int배열을 String으로!
내 것을 제출하고 다른 사람의 코드를 둘러보다가
answer = i + answer + i; 를 발견했다.
이걸 왜 생각 못했을까!!
그리고 for문에서도 int i = food.length-1 로 초기화하여
바로 대입하면 아주 간단해지는 문제였다.
나도 바로 만들어봤다.
public String solution(int[] food){
String answer = "0";
for(int i= food.length-1;i>0;i--) {
for (int j=0;j<food[i]/2;j++) {
answer = i+answer+i;
}
}
return answer;
}