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 문법 정리 -->
- .