[프로그래머스] 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을 곱한 후 새로운 수를 더해줌으로써
불필요한 형변환을 방지했다는 점이 좋은 아이디어였다.