food
food[0]은 물, 인덱스 1부터는 각각 요리의 개수를 저장한 배열 | [1, 3, 4, 6]
=> 두명의 선수가 각각 맨 좌측, 우측으로부터 음식을 먹어야 하는데, 가장 중앙의 물을 먼저 먹는 선수가 이긴다. 1번 음식부터 차례대로 같은 개수로 먹을 수 있도록 배치하여 return
음식의 수를 저장하고, 1번 음식부터 양옆에 차례로 추가하기
class Solution {
public String solution(int[] food) {
int size = 1;
for(int i=1; i<food.length; i++){
food[i] /= 2;
size += food[i];
}
size *= 2;
char[] answer = new char[size-1];
int point = 0;
for(int idx=1; idx<food.length; idx++){
for(int i=0; i<food[idx]; i++){
answer[point] = Integer.toString(idx).charAt(0);
answer[size-point-2] = Integer.toString(idx).charAt(0);
point++;
}
}
answer[point] = '0';
return String.valueOf(answer);
}
}
=> 완전히 느린건 아니지만 특정 테케에서 실행속도가 느렸음
class Solution {
public String solution(int[] food) {
StringBuilder sb = new StringBuilder();
sb.append(0);
for(int idx=food.length-1; idx>0; idx--){
for(int i=0; i<food[idx]/2; i++){
sb.insert(0, idx);
sb.append(idx);
}
}
return sb.toString();
}
}
=> insert(0,)을 통해 가장 앞에 추가하는 연산이 꽤나 실행속도를 많이 차지함을 알수있었음
TIP : String -> char[]는 문자열.toCharArray()로, char[] -> String은 String.valueOf(문자 배열)로 할 수 있다.