본문 바로가기

백준 문제풀이/1차원 배열

백준 2577 C / 단계별로 풀어보기 - 1차원 배열 4

 

안녕하세요.

 

이번에는 1차원 배열 4번째인 2577 번, 숫자의 개수 입니다. (BOJ 2577 C)

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

 

2577번: 숫자의 개수

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

www.acmicpc.net

 

세 숫자의 곱을 구하고 그 수에 0부터 9까지 몇 번 들어가있나 세는 문제로군요.

방법은 여러 가지가 있겠습니다만,

저는 10칸의 배열을 만들고, 수를 한자리씩 쪼개서 그 수의 갯수를 1개씩 늘려주는 방식으로 해보겠습니다.

예를 들어 12345 라고 하면

10보다 큰지 확인을 하고, 맞으면 10으로 나눈 것의 나머지를 구합니다.

그러면 5가 되겠죠.

10칸 배열의 5번 (배열의 6번째가 되겠죠. 0부터 시작하니까요.) 을 +1 해줍니다.

그리고 수를 10으로 나눠줍니다.

1234가 되겠네요. 이런식으로 코드를 짜보겠습니다.

 

이렇게 되겠네요.

#include <stdio.h>

int main()
{
	int A = 0, B = 0, C = 0, mul = 0, arr[10] = { 0 }, i = 0;
	scanf("%d %d %d", &A, &B, &C);
	mul = A * B * C;
	while (1)
	{
		if (mul >= 10)
		{
			arr[(mul % 10)]++;
			mul /= 10;
		}
		else
		{
			arr[mul]++;
			break;
		}
	}

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

	return 0;
}

 

 

감사합니다.