Skip to main content

1652.js

/** ------------------------------------------------------------------------------
*
* 1652. Defuse the Bomb
* Topics: Sliding Window
* https://leetcode.com/problems/defuse-the-bomb/?envType=daily-question&envId=2024-11-18
*
------------------------------------------------------------------------------ */
/**
* @param {number[]} code
* @param {number} k
* @return {number[]}
*/
var decrypt = function (code, k) {
const n = code.length
const result = new Array(n).fill(0)

if (k === 0) return result

let start,
end,
sum = 0

if (k > 0) {
start = 1
end = k
} else {
start = k + n
end = n - 1
}

for (let i = start; i <= end; i++) {
sum += code[i % n]
}

for (let i = 0; i < n; i++) {
result[i] = sum

sum -= code[start % n]
start++
end++
sum += code[end % n]
}
return result
}

/**
* 직관적이군
*/
var decrypt = function (code, k) {
const n = code.length
var res = new Array(n).fill(0)

if (k > 0) {
for (let i = 0; i < n; i++) {
let count = 0
let j = i + 1

while (count < k) {
if (j === n) j = 0
res[i] += code[j]
count++
j++
}
}
} else {
for (let i = 0; i < n; i++) {
let count = 0
let j = i - 1

while (count > k) {
if (j === -1) j = n - 1
res[i] += code[j]
count--
j--
}
}
}
return res
}