본문 바로가기
코딩테스트

[Softeer] 바이러스 JavaScript(Node.js) 풀이

by thedev 2024. 2. 2.

바이러스 JavaScript(Node.js) 풀이

 


 

// 입력받기
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

// k, p, n 각각 변수로 저장
const arr = input[0].split(' ')
const k = BigInt(arr[0]);
const p = BigInt(arr[1]);
const n = BigInt(arr[2]);

// 정답으로 제출할 sum 변수 생성
let sum = k;

// 반복문 돌면서 나머지 계산하기
for (let i = 0; i < n; i++) {
    sum = sum * p % BigInt(1000000007);
}

// BigInt를 사용한 뒤에는 toString()으로 변환하여 출력
console.log(sum.toString());

 

 

딱 보고 굉장히 쉬운 문제라고 생각했는데... 아니었다 ㅋㅋㅋㅋㅋㅠ

 

문제 풀면서 걸렸던 부분

 

1. 재귀함수로 푸니까 Max call이 넘었다고 에러가 났다. 그래서 반복문으로 변경함

2. 최종 결과에서 나머지를 구하지 말고! (그럼 숫자 너무 커짐) 계산 중간 과정인 반복문에서 바로 나머지를 구해주자

3. BigInt 타입 사용하기! BigInt를 이 문제를 통해 처음 알게 되었다... 자바스크립트에서 숫자 타입은 10^9까지의 값만 가질 수 있으므로, 더 큰 숫자를 계산하기 위해서는 BigInt를 사용해주어야 한다.

 

 

어쨌든 해결!!!