
내가 생각했을때 문제에서 원하는부분
정수가 담긴 리스트 num_list가 주어집니다.
num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.
내가 이 문제를 보고 생각해본 부분
주어진 코드는 정수 배열에서 홀수와 짝수를 분리하여 각기 이어 붙이고, 이어 붙인 두 수를 더한 값을 반환한다.
먼저, solution 메서드는 입력으로 받은 정수 배열을 순회한다.
각각의 숫자가 홀수인지 짝수인지를 판단하여, 홀수면 oddStr에, 짝수면 evenStr에 문자열 형태로 붙인다.
순회가 끝나면 홀수와 짝수로 이어 붙인 문자열을 Integer.parseInt()를 사용해 정수로 변환한다.
마지막으로 두 정수를 더하여 결과를 반환한다.
main 메서드는 Main17 클래스를 인스턴스화하여, 두 개의 예제 배열을 solution 메서드에 전달하고 반환된 결과를 출력한다.
출력된 값은 문제 조건에 맞게 홀수·짝수 이어 붙인 수들의 합과 일치한다.
코드로 구현
class Solution {
public int solution(int[] num_list) {
StringBuilder oddStr = new StringBuilder();
StringBuilder evenStr = new StringBuilder();
for (int num : num_list) {
if (num % 2 == 1) {
oddStr.append(num);
} else {
evenStr.append(num);
}
}
int oddNum = Integer.parseInt(oddStr.toString());
int evenNum = Integer.parseInt(evenStr.toString());
return oddNum + evenNum;
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 이어 붙인 수
public class Main17 {
public int solution(int[] num_list) {
StringBuilder oddStr = new StringBuilder();
StringBuilder evenStr = new StringBuilder();
for (int num : num_list) {
if (num % 2 == 1) {
oddStr.append(num);
} else {
evenStr.append(num);
}
}
int oddNum = Integer.parseInt(oddStr.toString());
int evenNum = Integer.parseInt(evenStr.toString());
return oddNum + evenNum;
}
public static void main(String[] args) {
Main17 sol = new Main17();
int[] example1 = {3, 4, 5, 2, 1};
int[] example2 = {5, 7, 8, 3};
System.out.println(sol.solution(example1)); // 393 출력
System.out.println(sol.solution(example2)); // 581 출력
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.