1번 문제.
https://www.acmicpc.net/problem/1009
-> 분산처리
import sys
t = int(sys.stdin.readline())
for _ in range(t):
ab = list(map(int, sys.stdin.readline().split()))
data_cnt = str(ab[0]**ab[1])
data = list(map(int, data_cnt))
print(data[-1])
7^100, 9^635 같은 숫자들은 연산처리하기에 너무 오랜 시간이 걸림.. ㅋ
import sys
# 테스트 케이스
t = int(sys.stdin.readline())
# 0 1 2 3 4 5 6 7 8 9 -> 0부터 9까지의 수
arr=[[], [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, sys.stdin.readline().split())
a = a % 10
if a != 0:
answer = arr[a][(b % len(arr[a]))-1]
print(answer)
else:
print(10)
=======================================================
2번 문제.
https://www.acmicpc.net/problem/1316
-> 그룹 단어 체커
import sys
n = int(sys.stdin.readline())
group_cnt = n
for _ in range(n):
words = sys.stdin.readline()
for i in range(len(words)-1):
if words.find(words[i]) > words.find(words[i+1]):
group_cnt -= 1
break
print(group_cnt)
=======================================================
문자열 알고리즘 관련된 문제를 풀 때 유리할 find()
find()를 사용하면 같은 단어에는 같은 숫자가 적용된다.
happy -> 0 1 2 2 3
abab -> 0 1 0 1
aaabbcb -> 0 0 0 1 1 2 1
즉, 순서대로 하나씩 빼서 문자를 보면서 비교할 수 있다.
(단, 문자열에만 적용되므로 주의해야 한다.)