알고리즘/백준 - 파이썬

백준) 1009번 분산처리 문제 (파이썬)

AI Sonny 2022. 6. 27. 13:53
728x90

문제) 재용이는 최신 컴퓨터 10대를 가지고 있다.

 

어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고,

 

10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.

 

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

 

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

 

총 데이터의 개수는 항상 ab개의 형태로 주어진다.

 

재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다.

 

이를 수행해주는 프로그램을 작성하라.

X = int(input())

for _ in range(X):
    a, b = map(int,input().split())
    c = pow(a,b,10)  # => a**b%c (반복문보다 한참 더 빨리 구해줍니다)   
    # ** => 제곱, % 나머지
    if c:
         print(c)
    else:
         print(10)

이번 문제는 처음에 a의 b제곱을 나타내기 위해 a**b%10을 하였다.

 

문제를 출력하였을 땐 이상없이 잘나왔으나 제출을 해보니 시간초과가 나타났다.

 

이 후 구글링을 해보니 pow 함수에 대해 알게 되었고, 이것을 사용하였다.

 

pow는 제곱을 나타내는 함수로 a의 b승을 나타낸다. 이 후 10은 나머지를 구하는 것이다.

 

그래서 마지막 if문에서 c이면 c를 출력하고, c가 아닌 (1~9를 제외한) 경우 10을 출력한다.

 

이해가 안되시거나 틀린 정보는 댓글로 알려주시면 감사하겠습니다!

728x90