넘치게 채우기
[LeetCode] 1652. Defuse the Bomb 본문
https://leetcode.com/problems/defuse-the-bomb/description/?envType=daily-question&envId=2024-11-18
leetcode - Defuse the Bomb
문제 유형: 구현
문제 난이도: Easy
문제
You have a bomb to defuse, and your time is running out! Your informer will provide you with a circular array code of length of n and a key k.
To decrypt the code, you must replace every number. All the numbers are replaced simultaneously.
- If k > 0, replace the ith number with the sum of the next k numbers.
- If k < 0, replace the ith number with the sum of the previous k numbers.
- If k == 0, replace the ith number with 0.
As code is circular, the next element of code[n-1] is code[0], and the previous element of code[0] is code[n-1].
Given the circular array code and an integer key k, return the decrypted code to defuse the bomb!
당신은 해체해야 할 폭탄을 가지고 있다.
당신은 n길이짜리 원형 배열 code와 정수 key k를 가지고 있다.
코드를 해독하기 위해, 당신은 숫자를 대치해야 한다.
- 만약 k > 0이라면, i번째 번호를 다음 k개의 번호의 합으로 대체하시오.
- k < 0이라면, i번째 번호를 이전 k개의 번호의 합으로 대체하시오.
- k == 0이라면, 모두 0으로 채우시오.
해독된 코드를 반환하시오!
풀이
단순한 모듈러 연산을 이용해주면 된다.
만약 k가 0이라면, n개짜리 배열에 0을담아 반환한다.
k가 양수라면, 앞의 k개의 숫자를 더해서 ans[i]에 저장한다. 이를 순차적으로 해준다.
k가 음수라면, |k|개의 뒤의 숫자를 더해서 ans[i]에 저장한다.
모듈러를 고려해서, n을 더하고 모듈러 n을 해주자.
최종 복호화 코드를 반환하자.
코드
C++
class Solution {
public:
vector<int> decrypt(vector<int>& code, int k) {
int n = code.size();
vector<int> ans(n, 0);
if(k == 0) return ans;
if(k > 0) {
for(int i = 0; i < n; ++i) {
int x = 0;
for(int j = 1; j <= k; ++j) {
x += code[(i + j + n) % n];
}
ans[i] = x;
}
} else {
k *= -1;
for(int i = 0; i < n; ++i) {
int x = 0;
for(int j = 1; j <= k; ++j) {
x += code[(i - j + n) % n];
}
ans[i] = x;
}
}
return ans;
}
};
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] 2516. Take K of Each Character From Left and Right (0) | 2024.11.20 |
---|---|
[LeetCode] 2461. Maximum Sum of Distinct Subarrays With Length K (0) | 2024.11.19 |
[LeetCode] 862. Shortest Subarray with Sum at Least K (0) | 2024.11.17 |
[LeetCode] 3254. Find the Power of K-Size Subarrays I (0) | 2024.11.16 |
[LeetCode] 1574. Shortest Subarray to be Removed to Make Array Sorted (0) | 2024.11.15 |