정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.
반복문을 돌면서 짝수 홀수를 담는 리스트를 만들면 되는데, 그걸 다시 하나의 숫자로 합쳐야하네, StringBuilder을 만들수도 없는거고 어떻게 하면되지..? 그 숫자를 반복문 돌면서 하나의 수로 만드는 연산이 따로있나
import java.util.*;
class Solution {
public int solution(int[] num_list) {
int answer = 0;
List<Integer> odd = new ArrayList<>();
List<Integer> even = new ArrayList<>();
for(int i = 0 ; i < num_list.length ; i++){
if(num_list[i] % 2 == 0){
even.add(num_list[i]);
} else {
odd.add(num_list[i]);
}
}
int evenConcat = concatNum(even);
int oddConcat = concatNum(odd);
answer = evenConcat + oddConcat;
return answer;
}
private int concatNum(List<Integer> numbers){
int concatNum = 0;
for(int num : numbers){
concatNum = concatNum * 10 + num;
}
return concatNum;
}
}
concatNum
을 만드는 메서드를 만들었다. 각각 순서대로 일의자리, 십의자리, 백의자리 ... 늘어나게 만들어야하기때문에 각각 10씩 곱해서 더해주는 방식이다. 1,2,3인경우 처음 1을 돌리면 num은 0이므로 한번돌리면 1이되고, 그 1이 다시 concatNum이 되므로, 다름에는 10이되고 2가 더해진다. 그 다음에는 120이 되고 3을 더하는 식이므로 세자리의 수를 만들수 있게된다.