숫자의 개수 (2577번)
1. 문제
세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면
A × B × C = 150 × 266 × 427 = 17037300 이 되고,
계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
2. 포인트
1) sprintf() 함수 사용 : 정수 → 문자열 변환 (stdio.h에 선언)
- 반환 값 : 문자열 길이
- int a = 2345 ----sprintf(str, "%d", a)----> str = {2, 3, 4, 5, \0}로 저장
2) 문자로된 숫자(char) → 숫자(int)로 변형 : 문자숫자 - 48 (아스키코드표 참고)
3. 소스코드
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int num1, num2, num3;
int cnt[10] = {0,};
int i;
scanf("%d %d %d", &num1, &num2, &num3);
sprintf(str, "%d", num1*num2*num3); //
for (i = 0; i < strlen(str); i++)
cnt[str[i] - 48]++;
for (i = 0; i < 10; i++)
printf("%d\n", cnt[i]);
return 0;
}
※ 기타
1) 자주 사용되는 아스키코드 내용
- 대문자가 소문자보다 빠름 → A:65 < a:97 ('A'-'a' = 32 차이)