문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
폭탄을 해체해야하고 시간이 얼마 남지 않았다. 정보원은 길이가 n인 원형 배열 code와 키 k를 제공한다.
코드를 해독하려면 모든 숫자를 바꿔야한다. 모든 숫자는 동시에 바뀐다.
code는 순환하고 code[n - 1] 다음은 code[0], code[0] 이전은 code[n - 1]이다.
순환 배열 code와 정수 키 k가 주어졌을 때, 폭탄을 해체하기 위한 해독된 코드를 반환해라.
#1
Input: code = [5, 7, 1, 4], k = 3
Output: [12, 10, 16, 13]
Explanation: 각 숫자는 다음 세 숫자의 합으로 대체된다. 복호화된 코드는 [7 + 1 + 4, 1 + 4 + 5, 4 + 5 + 7, 5 + 7 + 1]이다. 숫자가 순환되는 것을 확인할 수 있다.
#2
Input: code = [1, 2, 3, 4], k = 0
Output: [0, 0, 0, 0]
Explanation: k가 0일 때, 숫자는 0으로 대체된다.
#3
Input: code = [2, 4, 9, 3], k = -2
Output: [12, 5, 6, 13]
Explanation: 복호화된 코드는 [3 + 9, 2 + 3, 4 + 2, 9 + 4]이다. k가 음수이면, 합은 이전 숫자들의 합이다.
class Solution {
public int[] decrypt(int[] code, int k) {
int n = code.length;
int[] result = new int[n];
for(int i = 0; i < n; i++){
int sum = 0;
if(k > 0){
for(int j = 1; j <= k; j++){
sum += code[(i + j) % n];
}
}else if(k < 0){
for(int j = 1; j <= -k; j++){
sum += code[(i - j + n) % n];
}
}
result[i] = sum;
}
return result;
}
}