처음에 food
배열 숫자가 이해가 안돼서 생각해보다가
0번째 인덱스가 물
이고 그 다음 순차적으로 1번 음식의 수
, 2번 음식의 수
, 3번 음식의 수
라는 것을 깨달음!
두 선수가 동일한 음식의 양을 나눠먹어야 하기 때문에
음식의 수가 모두 짝수여야 한다.
총 음식의 수를 반으로 나누어서
중앙에는 0을 중심으로 왼쪽, 오른쪽(숫자뒤집기) 동일해야한다.
해당 문제에서는 음식 양의 칼로리가 적은 순서대로 배열에 담아주기 때문에 따로 정렬을 하지 않아도 된다.
class Solution {
public String solution(int[] food) {
String left = "";
String right = "";
for(int i=1; i<food.length; i++){
for(int j=0; j<food[i]/2; j++){
left += Integer.toString(i);
}
}
for(int i = left.length()-1; i>=0; i--){
right += left.charAt(i);
}
left += "0";
return left+right;
}
}
물
)을 중심으로 1,2,3번째 음식의 수의 절반 만큼 left
에 먼저 저장left
의 마지막숫자부터 차례대로 right
에 저장left
와 right
사이에 0(물
) 저장class Solution {
public String solution(int[] food) {
String left = "";
String right = "";
for(int i=1; i<food.length; i++){
for(int j=0; j<food[i]/2; j++){
left += Integer.toString(i);
}
}
StringBuffer sb = new StringBuffer(left);
right = sb.reverse().toString();
left += "0";
return left+right;
}
}
물
)을 중심으로 1,2,3번째 음식의 수의 절반 만큼 left
에 먼저 저장left
에 저장한 순서를 뒤집기 하면 되기 때문에StringBuffer
의 reverse()
를 사용해서 right
에 저장!left
와 right
사이에 0(물
) 저장