4/1 스터디 문제

hyejun sang·2022년 4월 1일
0

알고리즘

목록 보기
12/28
post-thumbnail

1번 문제.
https://www.acmicpc.net/problem/1009
-> 분산처리

1-1.번 문제 풀이 코드

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 같은 숫자들은 연산처리하기에 너무 오랜 시간이 걸림.. ㅋ

1-2.번 문제 풀이 코드

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
-> 그룹 단어 체커

2.번 문제 풀이 코드

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
즉, 순서대로 하나씩 빼서 문자를 보면서 비교할 수 있다.
(단, 문자열에만 적용되므로 주의해야 한다.)

0개의 댓글