✍🏻 문제 확인하기
접근 방법
- 컴퓨터는 총 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;
}
console.log(pow === 0 ? 10 : pow);
});
해설
- 처음에 a^b를 계산하기 위해 Math.pow(a,b)를 구하고 이 값을 10으로 나누어 나머지를 구했었는데, 큰 값을 테스트케이스로 주면 시간초과가 발생했다.
- 생각해보면 매 값을 제곱할 때마다 10으로 나누어주면 나머지 값은 늘 동일하다는 성질을 이용하면 될 것 같아 위와 같이 for문을 작성하였다.