CODING TEST/programmers

Day5 - 이어 붙인 수

iamyuunzo 2025. 7. 14. 09:17

📌 문제 정보

- 문제 이름 : 코딩 기초 테스트 - 이어 붙인 수

- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181928

 

 

📌 문제 요약

핵심 조건: 정수가 담긴 리스트 num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return

- 제한: 2 ≤ num_list의 길이 ≤ 10  /  1 ≤ num_list의 원소 ≤ 9  /  num_list에는 적어도 한 개씩의 짝수와 홀수가 있음.

 

 

📌 내 풀이 및 코드

class Solution {
    public int solution(int[] num_list) {
        String oddStr = "";
        String evenStr = "";

        for (int i=0; i<num_list.length; i++) {
            int n = num_list[i];

            if (n % 2 == 0) {
                evenStr += n;
            } else {
                oddStr += n;
            }
        }
        int oddNum = Integer.parseInt(oddStr);
        int evenNum = Integer.parseInt(evenStr);

        return oddNum + evenNum;
    }
}

-  문자열 -> 정수 변환하는 문법 기억이 안났음... Integer.parseInt(변수)

 

 

 

📌 다른 사람들 풀이

//1
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;
    
    
// 2
StringBuilder a = new StringBuilder();
StringBuilder b = new StringBuilder();

for (int num : num_list) {
    (num % 2 == 0 ? a : b).append(num);
}

return Integer.parseInt(a.toString()) + Integer.parseInt(b.toString());

<-- 다른 풀이 요약 -->

- 1 : 정수 누적 방식 (곱셈 + 덧셈)

- 2 : StringBuilder + for-each, 문자열 조합(append)

항목  코드 1 (정수 누적) 코드 2 (StringBuilder)  내 코드 (+= 문자열 누적)
누적 방식 수학적으로 even = even * 10 + n StringBuilder.append(n) String += n
성능 가장 빠름 (연산만 함) 빠름 (StringBuilder는 메모리 효율적) 가장 느림 (String 불변이라 매번 복사됨)
가독성 복잡 매우 간결 간결하지만 비효율적
코드 길이 길고 수학적 짧고 직관적 중간 수준
메모리 효율 최상 좋음 낮음

 



📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

- .