프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 배열의 길이에 따른 연산하기(Java)

Sigfriede 2023. 5. 11. 01:10

  문제 설명

  정수 배열 arr과 정수 n이 매개변수로 주어집니다. arr의 길이가 홀수라면 arr의 모든 짝수 인덱스 위치에 n을 더한 배열을, arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 하는 solution 함수를 작성해 주세요.

 

  제한사항

  • 1 <= arr의 길이 <= 1,000
  • 1 <= arr의 원소 <= 1,000
  • 1 <= n <= 1,000

 

  입출력 예

arr n result
[49, 12, 100, 276, 33] 27 [76, 12, 127, 276, 60]
[444, 555, 666, 777] 100 [444, 655, 666, 877]
import java.util.Arrays;
class Solution {
    public int[] solution(int[] arr, int n) {
        for (int i = 0; i < arr.length; i++) {
            if (arr.length % 2 != 0) {
                if (i % 2 == 0) {
                    arr[i] += n;
                }
            } else {
                if (i % 2 != 0) {
                    arr[i] += n;
                }
            }
        }
        int[] answer = Arrays.copyOf(arr, arr.length);
        return answer;
    }
}

  for문이 arr의 길이만큼 순회합니다. if문이 두 번 중첩됩니다. 바깥 if문은 arr의 길이를 2로 나눈 나머지가 0이 아닐 때, 즉 홀수일 때를 의미합니다. 안쪽 if문은 i를 2로 나눈 나머지가 0일 때, 즉 짝수일 때를 의미합니다. 앞선 두 if문의 조건을 만족한다면 arr의 i번째 원소에 n을 더하기 할당합니다.

  만약 arr의 길이가 홀수가 아니라면 if문에서 i를 2로 나눈 나머지가 0이 아닌지 확인합니다. arr의 길이가 짝수이고 i가 홀수일 때, arr의 i번째 원소에 n을 더하기 할당합니다.

  arr 배열의 값이 문제의 조건에 맞추어 변경되었으므로 배열을 복사하여 answer에 할당합니다. Arrays 클래스의 copyOf 메소드를 이용하여 인자로 arr 배열과 arr 배열의 길이를 입력함으로써 배열 전체를 복사합니다.