# 숫자의 개수(2577)

## 문제

세 개의 자연수 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번 쓰였다.

## 입력

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

## 출력

첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.

## 예제 입력

```
150
266
427
```

## 예제 출력

```
3
1
0
2
0
0
0
2
0
0
```

### 문자열분리를 사용해서 문제를 풀어야한다(실패 ㅠ)

```java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = (sc.nextInt()*sc.nextInt()*sc.nextInt());
        String str = String.valueOf(n);

        for (int i = 0; i < 10; i++) {
            int count = 0;
            for (int j = 0; j < str.length(); j++) {
                if((str.charAt(j) - '0') == i){
                    count++;
                }
            }
            System.out.println(count);
        }
    }
}
```

1. int를 3번 입력받아서 n값에 넣어줌
2. 문자열분리를 하기 위해서 n을 string으로 변환한다
3. 첫 번째 for문은 각각의 수를 검사하기 위한 for문
   * 여기서는 갯수를 기록하기 위한 변수인 count를 초기화시켜준다(각 자리수 마다 0으로 초기화되어는)
4. 두 번째 for문은 str의 길이만큼 모든 요소를 charAt()을 통해 해당 인덱스만큼 돌면서 i가 있는지 확인 후, count를 1 증가

* 저번에도 있었는데 charAt()을 사용하는 경우 -48이나 -'0'을 해줘야 아스키코드가 아닌 문자가 되기 때문에 무조건 기억하고 있자!

### 참고

{% embed url="<https://st-lab.tistory.com/45>" %}

## 2번째시도

```java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();

        String mul = Integer.toString(a*b*c);
        for(int i=0; i<10; i++){
            int sum = 0;
            for(int j=0; j<mul.length(); j++){
                if(mul.charAt(j) == (char)(i+'0'))
                    sum++;
            }
            System.out.println(sum);
        }
    }
}
```

구현자체는 어려운게 없었지만 역시.. 자바로 공부하는데

int -> char를 왜 몰랐을까....

전에도 봤던 것 같은데 (char)로 형변환해주는데 이렇게만 변환해주면 아스키코드가 나오기 때문에

'0'을 더해주는걸로 원하는 int값으로 되돌려 준다!!!!

모르면 많이 불편할꺼같으니까 다시 기억하자
