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번 쓰였다.
첫째 줄에는 A×B×C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A×B×C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.
2. 코드
import java.util.Scanner;
import java.util.stream.*;
import java.util.Arrays;
import java.lang.Math;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a,b,c;
int[] cnt = new int[10];
a=sc.nextInt(); b=sc.nextInt(); c=sc.nextInt();
int number = a*b*c;
int length = (int)(Math.log10(a*b*c)+1);
int[] digits = Stream.of(String.valueOf(number).split("")).mapToInt(Integer::parseInt).toArray();
for(int i=0;i<length;i++){
for(int j=0;j<10;j++){
if(digits[i]==j) cnt[j]++;
}
}
for(int i=0;i<10;i++){
System.out.println(cnt[i]);
}
sc.close();
}
}
3. 풀이
숫자의 길이를 구하는 방법
int number = 12345;
int length = (int)(Math.log10(number)+1);
//double 형이 되므로 int형으로 형변환 시켜줘야 함
각 자리수를 배열에 저장하는 방법
// import java.util.Arrays;
// import java.util.stream.*;
int num = 12345;
int[] digits = Stream.of(String.valueOf(number).split("")).mapToInt(Integer::parseInt).toArray();
4. 링크
https://www.acmicpc.net/problem/2577
'Computer Science > 자료구조와 알고리즘' 카테고리의 다른 글
[JAVA] 백준 1546번 : 평균 (0) | 2020.09.18 |
---|---|
[JAVA] 백준 3053번 : 나머지 (0) | 2020.09.18 |
[JAVA] 백준 2562번 : 최댓값 (0) | 2020.08.05 |
[JAVA] 10818번 : 최소, 최대 (0) | 2020.07.30 |
[JAVA] 백준 10996번 : 별찍기 - 21 (0) | 2020.07.25 |