본문 바로가기
Algorithm 💫/Problem Solving

[Softeer] 수퍼바이러스 (level3, Javascript)

by 돼지고기맛있다 2024. 11. 13.
반응형

✏️ 문제 링크

https://softeer.ai/practice/6292

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

✏️ 문제 풀이

Math.pow는 큰 숫자는 커버하지 못하기 때문에 지수 재귀 계산법으로 접근해야한다고 한다. 

아래 이미지에서 보면 지수가 짝수인 경우, 홀수인 경우가 나뉘게 되고 지수가 1인 경우는 num을 return 해주면 된다. 이 로직대로 구현해주면 아래 코드와 같다. 

 

✏️ 문제 코드

const readline = require('readline');
const rl = readline.createInterface({input:process.stdin, output: process.stdout});

let input = [];

const DIV = 1000000007n;

rl.on('line', function(line){
    input.push(line);
}).on('close', function(){
    const [k, p, n] = input.shift().split(' ').map(BigInt);

    const power = (power_num) => {
        if(power_num===1n) return p;
        
        if(power_num%2n===0n){// 짝수
            const sub = power(power_num/2n);
            
            return (sub*sub)%DIV;
        }else{
            const sub = power((power_num-1n)/2n);
            return (p*sub*sub)%DIV;
        }
    }
    const answer = (k*power(n*(10n)))%DIV
    console.log(parseInt(answer))
    
})

 

 

참고 링크

https://vehiclewithai.tistory.com/7

 

[파이썬] Softeer 연습문제 #4. 수퍼바이러스 (Lv. 3) 완벽해설

문제 https://softeer.ai/practice/6292 Softeer - 현대자동차그룹 SW인재확보플랫폼 수퍼바이러스가 숙주의 몸속에서 0.1초당 P배씩 증가한다. 처음에 수퍼바이러스 K마리가 있었다면 N초 후에는 총 몇 마리

vehiclewithai.tistory.com

 

반응형

댓글