[LeetCode] Defuse the Bomb

아르당·2026년 6월 8일

LeetCode

목록 보기
348/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

폭탄을 해체해야하고 시간이 얼마 남지 않았다. 정보원은 길이가 n인 원형 배열 code와 키 k를 제공한다.

코드를 해독하려면 모든 숫자를 바꿔야한다. 모든 숫자는 동시에 바뀐다.

  • k > 0 이면, i번째 숫자를 다음 k개 숫자의 합으로 대체한다.
  • k < 0 이면, i번째 숫자를 이전 -k개 숫자의 합으로 대체한다.
  • k == 0 이면, i번째 숫자를 0으로 바꾼다.

code는 순환하고 code[n - 1] 다음은 code[0], code[0] 이전은 code[n - 1]이다.

순환 배열 code와 정수 키 k가 주어졌을 때, 폭탄을 해체하기 위한 해독된 코드를 반환해라.

Example

#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가 음수이면, 합은 이전 숫자들의 합이다.

Constraints

  • n == code.length
  • 1 <= n <= 100
  • 1 <= code[i] <= 100
  • -(n - 1) <= k <= n - 1

Solved

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;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글