
* 문제 풀이
class Solution {
public int solution(int[] num_list) {
int answer = 0;
String odd = "";
String even = "";
for(int i = 0; i < num_list.length; i++){
if(num_list[i] % 2 != 0){
odd += Integer.toString(num_list[i]);
} else {
even += Integer.toString(num_list[i]);
}
}
answer = Integer.parseInt(odd) + Integer.parseInt(even);
return answer;
}
}

정수 -> 문자열 -> 정수 형변환을 통해 문제를 풀었다.
for 문을 통해 num_list 배열 요소를 확인한다.
if 문을 통해 배열 요소가 짝수/홀수임을 확인한다.
홀수인 경우 odd에, 짝수인 경우 even에 문자열 연결되어 저장된다.
다시 int로 형변환시켜 두 수의 합을 answer로 반환.
* 프로그래머스 다른 풀이
class Solution {
public int solution(int[] num_list) {
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;
}
}
이 코드는 굳이 형변환 하지 않은 코드.
int even = 0; // 짝수만 모아 하나의 숫자로 만들 변수
int odd = 0; // 홀수만 모아 하나의 숫자로 만들 변수
for each 문을 사용해 배열 요소를 하나씩 확인하는데 num % 2 == 0 이면 짝수, 그렇지 않으면 홀수
각 숫자를 이어붙이기 위해 10을 곱해준다.
even, odd를 더한 값을 answer에 반환.
⁕ 각 숫자에 10을 곱했는데 왜?
=> 숫자를 연결하기 위함!
위의 예처럼 배열이 [5, 7, 8, 3] 일 경우,
odd*= 10; 실행하면 0 * 10 = 0 / odd += num; 실행하면 0 + 5 = 5
odd *= 10; 실행하면 5 * 10 = 50 / odd += num; 실행하면 50 + 7 = 57
odd *= 10; 실행하면 57 * 10 = 570 / odd += num; 실행하면 570 + 3 = 573
even *= 10; 실행하면 0 * 10 = 0 / even += num; 실행하면 0 + 8 = 8
573 + 8 = 581를 answer에 반환할 수 있다.
10 곱하는 거 전혀 생각을 못 함. 코딩이란...
'코테 > 프로그래머스 JAVA Lv.0' 카테고리의 다른 글
| [프로그래머스/java/Lv.0] 홀짝에 따라 다른 값 반환하기 (0) | 2025.02.04 |
|---|---|
| [프로그래머스/java/Lv.0] 두 수의 연산값 비교하기 (0) | 2025.02.03 |
| [프로그래머스/java/Lv.0] 배열의 원소만큼 추가하기 (0) | 2025.02.01 |
| [프로그래머스/java/Lv.0] 인덱스 바꾸기 (0) | 2025.01.25 |
| [프로그래머스/java/Lv.0] 더 크게 합치기 (0) | 2025.01.22 |