문제

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.

예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.

2577번: 숫자의 개수

Write-up

설계 & 구현

‘number_box’ 라는 배열을 만들어 result의 각 자릿수에 있는 숫자에 따라 해당 번호의 배열칸이 1 증가하도록 설계했다.

예를 들어, result의 첫 자리에 해당하는 수가 7이라 할때, number_box[7]을 1 증가시키도록 하였다.

형 변환

string은 char가 연속으로 모인 클래스이기에 배열식 접근과 iterator 접근, 클래스 내 함수 접근이 가능했다.

그렇기에 배열 접근을 통해 자릿수에 해당하는 값을 불러왔고, char 형이기에 0의 아스키 코드를 빼주었다.

Source code

#include <iostream>
#include <string>

using namespace std;

int main(void)
{
    int a = 0, b = 0, c = 0;

    cin >> a;
    cin >> b;
    cin >> c;

    int result = a * b * c;

    string str_result = to_string(result);
    int number_box[10] = {0,};

    for (int i = 0; i < str_result.size(); i++)
    {
        int k = str_result[i] - '0';
        number_box[k]++;
    }

    for (int i = 0; i < 10; i++)
    {
        cout << number_box[i] << endl;
    }

    return 0;
}