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)
'Algorithm' 카테고리의 다른 글
[코틀린] 프로그래머스 42840(모의고사) (0) | 2022.01.19 |
---|---|
[파이썬] 프로그래머스 42840(모의고사) (0) | 2022.01.19 |
리트코드(LeetCode) 561번 배열 파티션(Array Partition) (0) | 2021.09.27 |
리트코드(LeetCode) 238번 자신을 제외한 배열의 곱(Product of Array Except Self) (3) | 2021.09.27 |
백준 알고리즘 파이썬(Python) 1940번 주몽 (0) | 2021.09.25 |