문제
내가 작성한 정답
class Solution {
public int solution(int[] num_list) {
String o = "";
String e = "";
for(int i : num_list) {
if (i % 2 == 1) o += "" + i;
else e += "" + i;
}
return Integer.parseInt(o) + Integer.parseInt(e);
}
}
다른 사람들의 정답
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) {
// 숫자를 자릿수에 맞게 하기 위해 10을 곱한다 -> 문자열로 변경할 필요없음
even *= 10;
even += num;
} else {
odd *= 10;
odd += num;
}
}
answer = even + odd;
return answer;
}
}
StreamAPI
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] numList) {
// 홀수 숫자들을 문자열로 변환하고 연결한 후, 정수로 변환
return Integer.parseInt(Arrays.stream(numList) // numList를 스트림으로 변환
.filter(value -> value % 2 != 0) // 홀수만 필터링
.mapToObj(String::valueOf) // 각 홀수를 문자열로 변환
.collect(Collectors.joining())) // 문자열들을 연결하여 하나의 문자열로 만듦
+ Integer.parseInt(Arrays.stream(numList) // numList를 스트림으로 변환
.filter(value -> value % 2 == 0) // 짝수만 필터링
.mapToObj(String::valueOf) // 각 짝수를 문자열로 변환
.collect(Collectors.joining())); // 문자열들을 연결하여 하나의 문자열로 만듦
}
}
// 위의 코드 짝수와 홀수로 분리
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] numList) {
// 홀수 숫자들을 문자열로 변환하고 연결한 후, 정수로 변환
int oddSum = Integer.parseInt(Arrays.stream(numList) // numList를 스트림으로 변환
.filter(value -> value % 2 != 0) // 홀수만 필터링
.mapToObj(String::valueOf) // 각 숫자를 문자열로 변환
.collect(Collectors.joining())); // 문자열들을 연결
// 짝수 숫자들을 문자열로 변환하고 연결한 후, 정수로 변환
int evenSum = Integer.parseInt(Arrays.stream(numList) // numList를 스트림으로 변환
.filter(value -> value % 2 == 0) // 짝수만 필터링
.mapToObj(String::valueOf) // 각 숫자를 문자열로 변환
.collect(Collectors.joining())); // 문자열들을 연결
// 홀수와 짝수로 만든 두 개의 정수를 더하여 반환
return oddSum + evenSum;
}
}
Share article