본문 바로가기
코딩테스트

[백준] 1009번 분산처리

by Taron 2023. 2. 13.

문제

재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.

1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... ,

10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ...

총 데이터의 개수는 항상 ab개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라.

 


#solution1

처음엔 아무 생각없이 접근했다

import sys
test_case = int(input())

for i in range(test_case):
    a,b = map(int,sys.stdin.readline().split())
    print(a ** b % 10)

당연히 시간초과로 실패 했다..

 

 

#solution2

시간초과를 어떻게 해결할까를 고민하던 중 제곱근 규칙을 이용해서 연산을 줄이면 된다고 생각해서 연산을 최대한 줄여서 시도 했다.

import sys
def cp_num(a,b):
    result = 1
    for _ in range(b):
        result *= a
    result = result % 10
    return result if result != 0 else 10

test_case = int(input())

for i in range(test_case):
    a,b = map(int,sys.stdin.readline().split())
    if a in [1,5,6]:
        print(a)
    else:
        if(b % 4 == 0):
            b = 4
            print(cp_num(a,b))
        else:
            print(cp_num(a,b %4))

이 코드로 시도했을때 성공 했다.

 

댓글