본문 바로가기

문제풀이/C 문제풀이

2577

2577

2577번 문제
#include 

int main(void) {
	int a, b, c, num, n, list[11] = {0,}; // 입력 받아야 할 숫자 3개, 모두 곱한 값, 나머지, 0-9까지 개수를 담을 배열

	scanf("%d %d %d", &a, &b, &c); // 숫자들을 입력 받는다
	num = a * b * c;
	do {
		n = num % 10; // 10으로 나눠서 나머지를 구한다
		list[n]++; // 나머지 값이 곧 배열 인덱스이므로 개수를 하나 추가한다
	} while ((num /= 10) != 0); // 처음 곱한 값을 계속 10으로 나눴을 때 몫이 0이 되기 전까지만 진행한다

	for (n = 0; n < 10; n++)
		printf("%d\n", list[n]); // 출력
}

결과

2577.png

숫자를 입력 받고 그와 관련된 개수를 세는 문제이므로 숫자를 배열 인덱스와 연관지어서 풀 수 있을지 생각해보았다. num을 한 자릿수마다 나눠서 생각하면 한 자릿수 값이 곧 배열의 인덱스가 되므로 한 자릿수로 나누는 것이 핵심이었다. num의 자릿수와 상관없이 개수를 세면 되므로 자릿수가 10으로 나눴을 때 나머지를 구하는 것으로 한 자릿수를 구하기로 하였다.

'문제풀이 > C 문제풀이' 카테고리의 다른 글

2920 + getchar + 배열 비교  (0) 2019.02.28
8958 + sizeof/strlen +char/int형 선언  (0) 2019.02.28
1152  (0) 2019.02.24
2941  (0) 2019.02.17
5622  (0) 2019.02.16