반응형

백준 알고리즘 - 1009번 분산처리 문제입니다. 

(참고 : https://www.acmicpc.net/problem/1009 )


코드 ) 

#include <stdio.h>

int main() {

int arr[10000];

int i, j, testcase, data, jegop, sum;

scanf("%d", &testcase);

for(i=0; i<testcase; i++) {

sum = 1;

scanf("%d %d", &data, &jegop);

for(j=0; j<jegop; j++) {

sum = (sum * data) % 10;

if(sum == 0)

arr[i] = 10;

else

arr[i] = sum;

}

}

for(i=0; i<testcase; i++) {

printf("%d\n", arr[i]);

}

return 0;

}


- 먼저, testcase를 입력받아 총 몇 회 실행할 것인지 입력받도록 합니다.

그 후, data와 제곱수(jegop)을 입력받아, sum에 data를 곱한 후, 10으로 나눈 나머지를 구하게 되면 항상 1의자리만 남게 됩니다. 

이 과정을 jegop번만큼 곱해주므로 for문 안에서 jegop만큼 수행하게 됩니다.

이렇게 반복 수행하여 나온 값(sum)이 0이라면 배열(arr)의 해당 번지에 10을 저장해주고, sum이 0이 아닌 다른 수라면 그 수를 배열의 해당 번지에 저장해주면 됩니다.

testcase만큼 입력을 받고 나서 arr에 분산처리된 값들이 저장 되면,

마지막으로 for문을 한번 더 testcase만큼 수행하여 arr에 저장 된 값들을 출력해주면 됩니다.

해당 문제에서 testcase에 대한 조건이 없었으므로 배열은 그냥 임의의 큰 수인 10000으로 잡았지만, 만약 testcase의 조건이 있었다면 배열의 크기를 testcase에 맞게 조정해주는 것이 좋겠죠.?

반응형

WRITTEN BY
SiriusJ

,