😎풀이

  1. 해독 코드가 적용될 배열 선언
  2. k에 따라 다른 처리
    2-1. k가 양수인 경우, 다음 k개의 숫자 합을 더하여 현재 인덱스의 해독 코드로 저장
    2-2. k가 0인 경우, 모든 코드는 0으로 적용
    2-3. k가 음수인 경우, 이전 k개의 숫자 합을 더하여 현재 인덱스의 해독 코드로 저장
  3. 해독된 코드 반환환
function decrypt(code: number[], k: number): number[] {
    const n = code.length
    const decrypt = new Array(n)
    if(k > 0) {
        for(let i = 0; i < n; i++) {
            let sum = 0
            // 다음 k개의 숫자 합
            for(let j = 1; j <= k; j++) {
                const curIdx = (i + j) % n
                sum += code[curIdx]
            }
            decrypt[i] = sum
        }
    } else if(k === 0) {
        return decrypt.fill(0)
    } else if(k < 0) {
        const absK = Math.abs(k)
        for(let i = 0; i < n; i++) {
            let sum = 0
            // 이전 k개의 숫자 합
            for(let j = 1; j <= absK; j++) {
                const curIdx = (i - j + n) % n
                sum += code[curIdx]
            }
            decrypt[i] = sum
        }
    }
    return decrypt
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글