본문 바로가기
7장 기타/백준 BOJ

[백준/BOJ] 2577번 숫자의 개수 (C++)

2021. 5. 10.
 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

문제의 소재

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;
}
반응형

댓글