1. StringBuilder를 사용

public int solution(int[] num_list) {
       StringBuilder even = new StringBuilder();
       StringBuilder odd = new StringBuilder();
        
        for(int i = 0; i < num_list.length; i++) {
            if(num_list[i] % 2 == 0) {
                even.append(num_list[i]);
            } else {
                odd.append(num_list[i]);
            }
        }
        
        int evenSum = Integer.parseInt(even.toString());
        int oddSum = Integer.parseInt(odd.toString());
        
        return evenSum + oddSum;
    }

 

숫자를 더하는게 아니라 이어붙여야하므로 문자열과 문자열을 이어붙이는 방식으로 처리할 수 있다.

만약 위의 코드처럼 숫자를 더하려면 문자열을 정수로 형변환을 해야 가능.

 

2. 숫자 10을 곱해서 숫자를 이어 붙일 수 있음.

public int solution(int[] num_list) {
        int answer = 0;

        int even = 0;
        int odd = 0;

        for(int num : num_list) {
            if(num % 2 == 0) {
                even *= 10;
                even += num;
            } else {
                odd *= 10;
                odd += num;
            }
        }
        answer = even + odd;

        return answer;
    }

 

프로그래머스에서 다른 사람이 푼 걸 보고 가져왔는데, 위의 코드와 같이 10을 곱한 후 num을 더하면 숫자를 이어붙일 때와 같은 결과값이 나오게됨. 보고 이런 방법이 있었구나 감탄함ㄷㄷㄷㄷ

'JAVA' 카테고리의 다른 글

System.arraycopy()  (0) 2024.03.21
메서드 정의  (0) 2024.03.06

+ Recent posts