[프로그래머스] Level 0 이어 붙인 수

 

 

 

문제

정수가 담긴 리스트 num_list가 주어질 때

 

num_list의 홀수만 순서대로 이어 붙인 수와

 

짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 메서드를 작성하라.

 

 

 

 

나의 답안

 

StringBulider를 이용,

 

리스트 내 원소들을 하나씩 조회하여

짝수와 홀수를 구별하고 각각을 StringBuilder에 추가

 

최종적으로 odd, even 변수를 String으로 전환 후 int로 변환하여

두 값을 더함

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

 

다른 답안들을 보니

 

내 답안은 StringBuilder를 선언하고

 

불필요하게 String 및 int형으로 변환하하는 과정을 거쳐 코드가 복잡해졌다.

 

 

모범 답안

class Solution {
    public int solution(int[] num_list) {
        int even = 0;
        int odd = 0;

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

        return odd + even;
    }
}
  • 기존 odd, even 값에서 10을 곱한 후 새로운 수를 더해줌으로써
    불필요한 형변환을 방지했다는 점이 좋은 아이디어였다.