[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.