Day6_[BOJ 1009] 분산처리 / C

장존훈·2022년 10월 31일
post-thumbnail

Prologue

어느 분야에서든 분산(Dispersion)은 중요합니다.

통신분야에서도 데이터를 여러 경로로 나누어 보내기도 하고, 버스나 지하철 등 대중교통의 배차량 조절도 일종의 분산으로 볼 수 있을 것입니다.

또한, 주식이나 코인 투자도 분산이 중요한데,

어,,

그런 의미에서 오늘은 분산처리를 풀어보겠습니다.

Problem

Problem Solving Methods

#include <stdio.h>

int main() {
  int getnum, a, b;
  scanf("%d", &getnum);
  for (int i = 0; i < getnum; i++) {
    int upnum = 1;
    scanf("%d %d", &a, &b);
    for(int j = 0; j < b; j++) {
      upnum = (upnum * a)%10;
    }
    if(upnum == 0) {
      printf("10\n");
    } else {
      printf("%d\n", upnum);
    }
  } 
}

요즘 배열문제를 따로 풀고있어서 문제를 보면 배열부터 생각이 납니다.
이것이 이번 문제의 Pain패인이었습니다.

Retrospect

직전의 코드는 다음과 같습니다.

int main() {
  int getnum, a, b, realnum;
  int arr[1001] = {0,};
  scanf("%d", &getnum);
  for (int i = 0; i < getnum; i++) {
    scanf("%d %d", &a, &b);
    int realnum = 0;
    int count = 1;
    int result = a;
    for (int k = 0; k < count; k++) {
      result*=a;
      arr[k] = result%10;
      if(arr[k] == a) {
        arr[k] = (result/a)%10;
        break;
      }
      arr[k] = (result/a)%10;
      count++;
    }
    realnum = b%count;
    if (realnum-1 < 0) {
      printf("%d\n", arr[count-1]);
    } else {
      printf("%d\n", arr[realnum-1]);
    }
  }
}

repl.it에서 실행시켰을 때, 결과는 동일하지만, 훨씬 코드가 난잡하고 알아보기 힘든것을 볼 수 있습니다.

배열을 먼저 떠올렸던 이유는 첫번째 자리 수를 계산 한 뒤, 이를 저장해놓고 비교 한 뒤 불러와야 한다는 강박에 시달려 배열만을 고집했지만, 생각해보니 계속 마지막 자리수만 수백번 계산해도 한자리 계산이니 그렇게 시스템적인 부하도 크지 않았습니다.

도움을 주신 @ryan_yonghyun.log 에게 감사하고, 분산 투자 하신 모든분들을 응원하며 오늘 글을 마치겠습니다.

감사합니다ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

0개의 댓글