Post

[Programmers] #181854 - 배열의 길이에 따라 다른 연산하기 [Java][C++][Python]

[Programmers] #181854 - 배열의 길이에 따라 다른 연산하기 [Java][C++][Python]

문제 링크


1. 아이디어

정수 배열 arr의 길이가 홀수라면 모든 짝수 인덱스 위치에 n을 더하고, 길이가 짝수라면 모든 홀수 인덱스 위치에 n을 더한 후 반환하는 문제로 배열의 길이를 2로 나눈 나머지와 인덱스를 2로 나눈 나머지를 비교하는 방식으로 n을 더할지 판단하면 된다.


2. 복잡도

접근시간공간
풀이$O(N)$$O(1)$

($N$ = arr의 길이. Java·C++는 인자를 제자리 수정해 반환하므로 공간 $O(1)$, Python은 새 리스트를 만들어 반환하므로 공간 $O(N)$)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
class Solution {
    public int[] solution(int[] arr, int n) {
        for (int i = 0; i < arr.length; i++) {
            if (arr.length % 2 != i % 2) arr[i] += n;
        }

        return arr;
    }
}
1
2
3
4
5
6
7
8
9
10
#include <bits/stdc++.h>
using namespace std;

vector<int> solution(vector<int> arr, int n) {
    for (int i = 0; i < arr.size(); i++) {
        if (arr.size() % 2 != i % 2) arr[i] += n;
    }

    return arr;
}
1
2
def solution(arr, n):
    return [x + n if len(arr) % 2 != i % 2 else x for i, x in enumerate(arr)]

This post is licensed under CC BY 4.0 by the author.