프로그래머스 : 이어 붙인 수

Digeut·2024년 2월 28일
0

프로그래머스

목록 보기
137/164

❔문제설명

정수가 담긴 리스트 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을 더하는 식이므로 세자리의 수를 만들수 있게된다.

profile
개발자가 될 거야!

0개의 댓글