Algorithm
백준 알고리즘 파이썬(Python) 1009번 분산처리
🤖 Play with Android 🤖
2022. 1. 5. 22:30
728x90
❌ 풀이 1 (시간 초과 실패)
N = int(input())
for _ in range(N):
a, b = map(int, input().split())
print((a ** b) % 10)
제곱의 수가 커질수록 수가 상상 이상으로 커져 시간 초과가 나오게 된다.
🙆♂️ 풀이 2
컴퓨터가 총 10대이고 하나하나 제곱하며 10으로 나눈것의 나머지의 규칙을 찾아보면 다음 표와 같이 나온다.
여기서 조심해야 될 부분은 끝자리가 0인 값의 제곱수들인데 0번 컴퓨터는 없으므로 해당 값들은 10번 컴퓨터가 출력되도록 코드를 짜주어야 한다.
각각의 경우를 if문을 통해 불필요한 계산을 줄여주어 시간초과를 피할 수 있었다.
풀이 코드
n = int(input())
arr = []
for i in range(n):
arr.append(list(map(int, input().split())))
for i in range(len(arr)):
a = arr[i][0] % 10
b = arr[i][1]
if a == 0:
print(10)
elif a == 1 or a == 5 or a == 6:
print(a)
elif a == 4 or a == 9:
if b % 2 == 0:
print((a**2) % 10)
else:
print(a % 10)
elif a == 2 or a == 3 or a == 7 or a == 8:
print((a**b) % 10)