
내가 생각했을때 문제에서 원하는부분
정수 배열 arr과 정수 n이 매개변수로 주어집니다.
arr의 길이가 홀수라면 arr의 모든 짝수 인덱스 위치에 n을 더한 배열을, arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 하는 solution 함수를 작성해 주세요.
내가 이 문제를 보고 생각해본 부분
solution 메서드에서는 입력 배열 arr의 길이를 length에 저장한다.
arr 배열을 원본 변경 없이 수정하기 위해 clone() 메서드로 복사한 answer 배열을 생성한다.
배열 길이가 홀수인지 짝수인지 판별한다.
홀수인 경우에는 짝수 인덱스(0, 2, 4, ...)만큼 for 문을 돌면서 answer[i]에 n을 더한다.
짝수인 경우에는 홀수 인덱스(1, 3, 5, ...)의 위치에 n을 더한다.
수정된 answer 배열을 반환한다.
main 메서드에서는 두 개의 테스트 케이스가 포함되어 있다.
첫 번째는 arr1 = {49, 12, 100, 276, 33}과 n1 = 27인 경우이며, 길이가 홀수이므로 짝수 인덱스 값들에 27을 더한 결과를 출력한다.
두 번째는 arr2 = {444, 555, 666, 777}과 n2 = 100인 경우로, 배열 길이가 짝수이므로 홀수 인덱스 값에 100을 더한 결과를 출력한다.
코드로 구현
class Solution {
public int[] solution(int[] arr, int n) {
int length = arr.length;
int[] answer = arr.clone();
if (length % 2 == 1) {
for (int i = 0; i < length; i += 2) {
answer[i] += n;
}
} else {
for (int i = 1; i < length; i += 2) {
answer[i] += n;
}
}
return answer;
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 배열의 길이에 따라 다른 연산하기
public class Main91 {
public static int[] solution(int[] arr, int n) {
int length = arr.length;
int[] answer = arr.clone();
if (length % 2 == 1) {
for (int i = 0; i < length; i += 2) {
answer[i] += n;
}
} else {
for (int i = 1; i < length; i += 2) {
answer[i] += n;
}
}
return answer;
}
public static void main(String[] args) {
int[] arr1 = {49, 12, 100, 276, 33};
int n1 = 27;
int[] result1 = solution(arr1, n1);
System.out.print("[");
for (int i = 0; i < result1.length; i++) {
System.out.print(result1[i]);
if (i < result1.length - 1)
System.out.print(", ");
}
System.out.println("]");
int[] arr2 = {444, 555, 666, 777};
int n2 = 100;
int[] result2 = solution(arr2, n2);
System.out.print("[");
for (int i = 0; i < result2.length; i++) {
System.out.print(result2[i]);
if (i < result2.length - 1)
System.out.print(", ");
}
System.out.println("]");
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.