
내가 생각했을때 문제에서 원하는부분
정수 리스트 num_list가 주어집니다.
가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요.
두 값이 같을 경우 그 값을 return합니다.
내가 이 문제를 보고 생각해본 부분
solution 메서드는 정수 배열 num_list를 입력받는다.
변수 oddSum은 홀수 번째 원소들의 합을 저장하며, evenSum은 짝수 번째 원소들의 합을 저장한다.
for 반복문은 배열의 모든 원소에 대해 인덱스 i를 0부터 끝까지 순회한다.
인덱스가 짝수일 때(i % 2 == 0)는 배열의 1, 3, 5번째 원소에 해당하므로 oddSum에 더한다.
인덱스가 홀수일 때는 배열의 2, 4, 6번째 원소로 보아 evenSum에 더한다.
반복문 종료 후 oddSum과 evenSum을 비교하여 크거나 같은 값인 oddSum을 우선 반환하고 그렇지 않으면 evenSum을 반환한다.
main 메서드에서는 두 개의 테스트 배열을 만들고, 각각 solution 메서드를 호출해 결과를 출력한다.
테스트 결과는 첫 번째 배열에서 홀수 위치 원소들의 합인 17, 두 번째 배열에서는 짝수 위치 원소들의 합인 8이 출력되는 구조이다.
코드로 구현
class Solution {
public int solution(int[] num_list) {
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i < num_list.length; i++) {
if (i % 2 == 0) {
oddSum += num_list[i];
} else {
evenSum += num_list[i];
}
}
return oddSum >= evenSum ? oddSum : evenSum;
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 홀수 vs 짝수
public class Main58 {
public static int solution(int[] num_list) {
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i < num_list.length; i++) {
if (i % 2 == 0) {
oddSum += num_list[i];
} else {
evenSum += num_list[i];
}
}
return oddSum >= evenSum ? oddSum : evenSum;
}
public static void main(String[] args) {
int[] test1 = {4, 2, 6, 1, 7, 6};
int[] test2 = {-1, 2, 5, 6, 3};
System.out.println(solution(test1)); // 17 출력 예상
System.out.println(solution(test2)); // 8 출력 예상
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.