본문 바로가기
개발/코딩테스트

[Python] 백준 1009번 분산처리 - 구현

by seopport 2023. 6. 17.
728x90
반응형

백준 홈페이지 문제와 개인적인 풀이를 작성한 글입니다.

 

백준 1009번 - 분산처리

 

1009번: 분산처리

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

www.acmicpc.net

 


문제

재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.
1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 
10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ...
총 데이터의 개수는 항상 ab개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 
이를 수행해주는 프로그램을 작성하라.

 

입력

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다.
그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다.
(1 ≤ a < 100, 1 ≤ b < 1,000,000)

 

출력 

각 테스트 케이스에 대해 마지막 데이터가 처리되는 컴퓨터의 번호를 출력한다.

 

 

예제 입력 1 예제 출력 1
5
1 6
3 7
6 2
7 100
9 635
1
7
6
1
9

 

파이썬의 가장 큰 장점은 내가 생각한 것을 구현하기 가장 쉬운 언어중 하나이라고 생각합니다.

예를 들어, 한 단어를 리스트로 변화하는 것은 매우 간단하여 해당 문제를 풀 때 계산을 진행하고 가장 마지막 글자를 가져오면 될 것 같다는 생각을 하였다.
규책성은 먼저 생각하지 않고, 최대한 빠르게 해결하려다보니 예상하지 못한 오류가 났고, 다른 분 코드를 참고하여 해당 문제를 풀 수 있었다.

 

내 코드 - 실패 (시간 초과)

import sys;

# 변수 입력을 위한 작업
input = sys.stdin.readline;

n = int(input());
li = [];

for i in range(n):
  m, k = map(int, input().split());
  temp = m ** k;
  dap = list(str(temp));
  
  li.append(dap[-1]);

for i in li:
  print(i);

 

문제에도 작성되어 있지만, 10번째일 경우 10을 출력하는 것도 고려를 안하였기 때문에 해당 문제는 패턴을 생각하여 푸는 문제가 맞습니다. 접근 방식 자체가 틀렸기 때문에, 위의 코드는 문제를 정확하게 파악하지 못한 필자를 반성하기 위해 남겨두었습니다.

 

 

 

참고하여 수정한 코드 - 성공

import sys;

# 변수 입력을 위한 작업
input = sys.stdin.readline;

n = int(input());
li = [];

for i in range(n):
  a, b = map(int, input().split());
  aa = a % 10; # % 연산자는 나머지를 나타냅니다.

  if aa == 0:
    print(10);
  elif aa in [1,5,6]:
    print(aa);
  elif aa in [4, 9]:
    bb = b % 2;
    if bb == 0 :
      print(aa * aa % 10);
    else:
      print(aa);
  else :
    bb = b % 4;
    if bb == 0 :
      print(aa ** 4 % 10);
    else :
      print(aa ** bb % 10);

 

총 4개의 패턴이 나오는 것을 확인할 수 있고, 그것에 대한 규칙을 만들어 코드를 작성하면 끝난다.

비교적 간단하게 풀 수 있는 문제 이지만, 구현의 초점을 맞추려고 한다.

728x90
반응형