-
[BaekJoon Java] 숫자의 개수(2577)Coding Test/BaekJoon 2020. 12. 26. 17:48
- 문제
세 개의 자연수 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
'Coding Test > BaekJoon' 카테고리의 다른 글
[BaekJoon Java] 평균(1546) (0) 2020.12.26 [BaekJoon Java] 나머지(3052) (0) 2020.12.26 [BaekJoon Java] 최댓값(2562), Array와 ArrayList 차이점 (0) 2020.12.26 [BaekJoon Java] X보다 작은 수(10871) (0) 2020.12.25 [BaekJoon Java] A + B - 7(11021) (0) 2020.12.20