Coding Test/BaekJoon
[BaekJoon Java] 숫자의 개수(2577)
momong'-'
2020. 12. 26. 17:48
2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다.
www.acmicpc.net
- 문제
세 개의 자연수 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번 쓰였다.
- 예제 입출력
- 풀이
package step.array.one_dimensional;
import java.util.Scanner;
/**
* 세 개의 자연수 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번 쓰였다.
*
* @author imj10
*
*/
public class NumberOfNumbers {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int sum = a * b * c;
// 결과를 담을 list
int[] list = new int[10];
while ( sum > 0 ) {
list[sum % 10]++;
sum /= 10;
}
for (int i=0; i <list.length; i++ ) {
System.out.println(list[i]);
}
}
}
- 결과
- 추가설명
처음에는 나온 값을 배열에 넣어 자릿수 하나하나 찾으려고 했다... 문자처럼
근데 생각해보니 숫자는 나눠서 하면 되네...ㅎ
괜히 엄청 복잡하게 풀 뻔...
값을 구해 sum에 넣고 sum%10을 구해 1의자리 부터 하나씩 구해 배열에 넣었다.
값은 0-9까지 10개로 한정된 값만 나오므로 Array를 사용한다.
배열
list[0]: 0 개수
list[1]: 1 개수
list[2]: 2 개수
...
list[9]: 9 개수
예를 들어 A × B × C = 150 × 266 × 427 = 17037300이다.
디버깅
sum | sum%10 | list[sum%10] | list | |
0 | 17037300 | 0,0,0,0,0,0,0,0,0,0 | ||
1 | 1703730 | 0 | 1 | 1,0,0,0,0,0,0,0,0,0 |
2 | 170373 | 0 | 2 | 2,0,0,0,0,0,0,0,0,0 |
3 | 17037 | 3 | 1 | 2,0,0,1,0,0,0,0,0,0 |
4 | 1703 | 7 | 1 | 2,0,0,1,0,0,0,1,0,0 |
5 | 170 | 3 | 2 | 2,0,0,2,0,0,0,1,0,0 |
6 | 17 | 0 | 3 | 3,0,0,2,0,0,0,1,0,0 |
7 | 1 | 7 | 2 | 3,0,0,2,0,0,0,2,0,0 |
8 | 0 | 1 | 1 | 3,1,0,2,0,0,0,2,0,0 |
결과 3 1 0 2 0 0 0 2 0 0