PS (C, C++)

[백준/C & C++] 2577 숫자의 개수

최연재 2022. 9. 15. 12:53

https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

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

www.acmicpc.net

코드 (C)

#include <stdio.h>

int main()
{
	int a, b, c, arr[10] = {0};
	scanf("%d %d %d", &a, &b, &c);
	int result = a * b * c;

	while (result != 0)
	{
		arr[result % 10]++;
		result /= 10;
	}

	for (int i = 0; i < 10; i++) printf("%d \n", arr[i]);
	return 0;
}

코드 (C++)

#include <iostream>
using namespace std;

int main()
{
	int a, b, c, arr[10] = {0};
	cin >> a >> b >> c;

	int value = a * b * c;
	while (value != 0)
	{
		arr[value % 10]++;
		value /= 10;
	}

	for (int i = 0; i < 10; i++) cout << arr[i] << "\n";
	return 0;
}

코드 설명

입력받은 세 수를 곱한 값을 result(value)에 저장한다. 

0~9까지 숫자가 몇 번 쓰였는지를 저장하기 위해 배열을 선언하고 0으로 초기화한다. 

 

result가 0이 될 때까지 반복문을 돈다. 

나머지 값을 구하고 그 값을 배열의 인덱스로 사용해서 저장된 값에 1을 더해나간다. 

그 후 result를 10으로 나눠가며 위 과정을 반복한다. 

 

반복문이 끝나면 다시 0부터 9까지의 개수를 출력하는 반복문을 이용해 결과를 출력한다. 

 

느낀 점

배열의 인덱스 값을 나머지 값으로 사용해서 금방 풀었다.