처음 설계한 방법은 위와 같다. 설계대로 구현하며 잘못되거나, 더 쉬운 방법이 있어서 방법을 고쳐나아갔다.
특히 5번의 right배열에 sort reverse를 하지않고 left = right로 하였다.
6번의 while문도 할 필요가 없었고, left와 right의 반복문을 수행하여 해당 인덱스의 수만큼 repeat해주면서 숫자를 answer에 더해주면 되었다.
그런데... 다 풀고 다른분들이 한것을보니 엄청 쉽다.. 나만 어렵게 생각했네..
package Lv_1;
import java.util.Arrays;
public class 푸드파이트대회 {
public static String solution(int[] food) {
String answer = "";
int[] left = new int[food.length - 1];
int[] right;
for (int i = 1; i < food.length; i++) {
if (food[i] % 2 != 0) {
food[i]--;
}
}
for (int i = 1; i <= food.length - 1; i++) {
left[i - 1] = food[i] / 2;
}
right = left;
for (int i = 0; i < left.length; i++) {
answer += Integer.toString(i + 1).repeat(left[i]);
}
answer += "0";
for (int i = right.length; i > 0; i--) {
answer += Integer.toString(i).repeat(right[i - 1]);
}
return answer;
}
public static void main(String[] args) {
int[] food = new int[]{1, 3, 4, 6};
String result = solution(food);
System.out.println(result);
}
}
'Java > Programmers' 카테고리의 다른 글
[Lv.1]가장 가까운 같은 글자 (0) | 2023.01.27 |
---|---|
[Lv.1]실패율 (0) | 2023.01.27 |
[Lv.1]콜라 문제 (0) | 2023.01.25 |
[Lv.1] K번째수 (0) | 2023.01.24 |
[Lv.1]문자열 내 마음대로 정렬하기 (0) | 2023.01.24 |
댓글