문제의 소재
3자리수 숫자 A, B, C가 입력되면 A×B×C의 값에 0~9까지의 숫자가 몇 개 사용됐는지 개수를 세는 문제이다.
해답
각 숫자가 사용된 횟수를 저장할 배열 num[10]을 int num[10] = {0};으로 초기화해주었다. for문을 이용해 N에 A×B×C를 저장하고, 1의 자리수부터 차례대로 num[N%10], N /= 10을 이용해서 개수를 셌다.
A, B, C는 1000미만의 세자리 정수이므로 A×B×C는 10003=109보다 작다. 따라서 A×B×C를 int형에 저장하여도 범위를 초과하지 않는다.
// BOJ_2577.cpp
#include<iostream>
using namespace std;
int main()
{
int A, B, C;
int num[10] = {0};
cin>>A>>B>>C;
for (int N=A*B*C;N>0;N/=10)
num[N%10]++;
for (int i=0;i<10;i++)
cout<<num[i]<<endl;
return 0;
}
반응형
댓글