#23. [백준_C언어] 2577 : 숫자의 개수

 

입력 코드

#include <stdio.h>

main() {
	int A, B, C;

	scanf("%d %d %d", &A, &B, &C);

	int num, rest, i;
	int count[10] = { 0, };

	num = A*B*C;
	
	while (num >0) {
		rest = num % 10;
		num = num / 10;
		count[rest]++;
	}

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

 

 코드 설명 

배열과 수학을 이용하는 문제

#include <stdio.h>

main() {
	int A, B, C;

	scanf("%d", &A);
	scanf("%d", &B);
	scanf("%d", &C);

	char num[];
	num = A*B*C;

	int i=0,j;
	char count[11];

	while (num != '\0') {
		for (j = 0; j < 10; j++) {
			if (num[i] == j)
				count[j]++;
		}
		i++;
	}
	printf("%d\n", count[j]);
}

처음에는 이렇게 했지만 num 배열에 숫자 하나씩 들어가는 게 아니었다. 

#include <stdio.h>

main() {
	int A, B, C;

	scanf("%d %d %d", &A, &B, &C);

	int num, rest, i;
	int count[10] = { 0, };

	num = A*B*C;
	
	while (num >0) {
		rest = num % 10;
		num = num / 10;
		count[rest]++;
	}

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

어차피 1-9까지 숫자가 몇 번 쓰였는지 세는 거여서 숫자가 그대로 들어가지 않고 거꾸로 들어가도 된다. 10으로 나누면 그 나머지가 1의 자리 수고, 다시 10으로 또 나누면 그 나머지가 10의 자리 수가 된다. 이걸 계속 반복해서 배열에 넣으면 되는 거였다. 

 

 

참고한 사이트

blog.naver.com/PostView.nhn?blogId=wlgh325&logNo=221332237436&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView

 

[백준 알고리즘] 2577번 숫자의 개수

문제 세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번...

blog.naver.com

 

 

 문제 출처 

www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

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

www.acmicpc.net