알고리즘(Algorithm)

숫자의 개수 (2577번)

맛두부 2017. 3. 4. 16:56

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 차이)