[ 백준 2577번 ] 5단계 - 숫자의 개수

2021. 11. 10. 23:35백준

백준 2577번 / 숫자의 개수

 

백준 2577번 - 숫자의 개수

 

채점 결과는 다음과 같다

  메모리 시간
1번째 방법 1112 KB 0 ms

 

문제 풀이
0 ~ 9 숫자의 개수를 담을 number 배열 10개를 선언한다.

1. 먼저 A, B, C 값을 배열에 입력받고 합계 변수 sum에 입력받은 값을 곱해준다.
A: 150
B: 266
C: 427
sum = 150 x 266 x 427 = 17037300

2. sum이 한 자릿수가 될 때까지 돌려주면서 나머지를 연산자를 사용해 끝에서부터 하나씩 잘라서
Number 배열 sum % 10 인덱스에 1을 플러스해주고 sum을 10으로 나눠주면서 처리한 숫자는 제거해준다.

sum = 17037300 % 10 = 0
number [sum % 10] == number [0] 이므로 number 0번째 인덱스에 플러스 1
sum = sum / 10 = 1703730

이렇게 계속 반복해가면서 sum 이 한 자릿수가 될 때까지 반복하고 반복문을 탈출해준다.

3. 변수 i가 0부터 9까지 반복 구조를 실행시키면서 number 배열 i 번째 인덱스를 출력양식에 맞춰 출력해준다.

 

코드
#include <stdio.h>
#include <algorithm>
#include <math.h>

using namespace std;

int number[10];

int main() {
	int i = 0;
	int input[3] = {0, };
	int sum = 0;

	for ( i = 0; i < 3; i++ ) {
		scanf("%d\n", &input[i]);
	}

	sum = input[0] * input[1] * input[2];

	while (sum > 0) {
		number[sum % 10]++;
		sum /= 10;
	}

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