[백준|node.js] 1009번, 분산처리 (for문) - 구현

muz·2022년 7월 14일
0
post-thumbnail

✍🏻 문제 확인하기

접근 방법

  • 컴퓨터는 총 10대로, 1~10번의 번호를 가짐
  • 데이터의 총 개수는 a^b개이므로 계산 시 a^b를 구해 10으로 나누어 나머지 값을 구하면 됨
  • 1번 컴퓨터는 a^b%10을 했을 때 나머지가 1이 나오고,
    2번 컴퓨터는 a^b%10을 했을 때 나머지가 2가 나오고,
    ...
    10번 컴퓨터는 a^b%10을 했을 때 나머지가 0이 나옴

풀이

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');

const T = input.shift('')*1;

input.map((v) => {
    const [a,b] = v.split(' ');
    let pow = 1
    for(let i = 0; i < b; i++) {
        pow = (pow * a) % 10; // 10으로 나눈 나머지 값은 항상 같음
    }
    console.log(pow === 0 ? 10 : pow); // 0이 나오면 10번째 컴퓨터가 데이터를 처리했음을 알려주기
});

해설

  • 처음에 a^b를 계산하기 위해 Math.pow(a,b)를 구하고 이 값을 10으로 나누어 나머지를 구했었는데, 큰 값을 테스트케이스로 주면 시간초과가 발생했다.
  • 생각해보면 매 값을 제곱할 때마다 10으로 나누어주면 나머지 값은 늘 동일하다는 성질을 이용하면 될 것 같아 위와 같이 for문을 작성하였다.
profile
Life is what i make up it 💨

0개의 댓글