문제
https://www.acmicpc.net/problem/2577
설명
최근에 헬스랑 배민 배달즘 뛰느라 바빠서 백준을 못건들고 있었다…. 이제 들어가는 Array문제집의 첫문제. 입력값으로 100~1000 의 수를 받아서 세개의 수를 곱해서 나오는 수에서 각자리의 숫자의 갯수를 세는 문제다. 나는 그래서 일단 3 개를 곱해서 저장하고 int형인 그 변수를 string 문자열로 변환하였다. 그런다음 output 배열에 저장하도록 하였다. 대신 string일때 숫자와 int일때의 숫자는 아스키 코드 상으로 다르므로 -48 을 하여 서로의 값을 보정하여 결과값을 저장하도록 하였다. 시간날때마다 계속 문제 달려봐야겠다.
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
int input = 1, output[11] = {0,0,0,0,0,0,0,0,0,0,0};
char converted[20];
for (int i = 0; i < 3; i++)
{
int temp1 = 0;
scanf("%d", &temp1);
input *= temp1;
}
int j = 9;
while(1)
{
int temp2 = pow(10, j);
if (input % temp2 != input)
break;
else
j--;
}
j++;
sprintf(converted, "%d", input);
for (int i = 0; i < j; i++)
output[converted[i] - 48]++;
for (int i = 0; i < 10; i++)
printf("%d\n", output[i]);
return 0;
}