본문 바로가기
Problem Solving/BOJ

[BOJ][Python]1009 풀이

by NoiB 2023. 6. 22.
반응형

https://www.acmicpc.net/problem/1009

 

1009번: 분산처리

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

www.acmicpc.net

import sys

ssr = sys.stdin.readline

t = int(ssr())
c = [[10],
     [1],
     [2, 4, 8, 6],
     [3, 9, 7, 1],
     [4, 6],
     [5],
     [6],
     [7, 9, 3, 1],
     [8, 4, 2, 6],
     [9, 1]]
for _ in range(t):
    a, b = map(int, ssr().split())
    i = a%10
    tmp = b%len(c[i])-1
    print(c[i][tmp])

오랜만에 보는 시키는대로 하면 시간초과가 나는 문제입니다. b의 크기가 무척 크기 때문에 다 곱해서 나머지 체크하려고 하면 시간초과가 나겠죠. 사실 눈치 빠른 분들은 문제에서 $a^b$가 어쩌구 할 때 아 지수의 규칙성을 이용하겠구나 하고 생각이 드셨을겁니다. 초등학교인지 중학교인지 이걸 이용해서 첫번째 자리수가 무엇인지 묻는 문제가 있었던 걸로 기억합니다.

 

컴퓨터의 번호가 10번까지로 고정이 되어있기 때문에 미리 테이블을 만들어줬습니다. 그리고 a를 10으로 나눈 나머지를 인덱스로 활용해 특정 숫자에서 1의 자리수가 어떤 규칙성을 가지고 있는지 체크를 하고 출력해주시면 됩니다. 어렵지는 않은데 브론즈 3~2 구간 문제들에서 슬슬 시간 초과를 내는 문제들이 나오다보니 처음 이런 경우를 겪으셨다면 살짝 헤매셨을수도 있을 것 같습니다.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]1076 풀이  (0) 2023.06.24
[BOJ][Python]1075 풀이  (0) 2023.06.23
[BOJ][Python]1247 풀이  (0) 2023.06.21
[BOJ][Python]1264 풀이  (0) 2023.06.20