## Java 풀이 시 유의사항 ##
클래스명은 Main 으로 작성해야함!
// 풀이 1
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 result = Integer.toString(a * b * c);
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < result.length(); j++) {
if (Character.forDigit(i, 10) == result.charAt(j)) {
arr[result.charAt(j) - '0']++;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
sc.close();
}
}
// 풀이 2 (개선코드)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[10];
int val = Integer.parseInt(br.readLine()) * Integer.parseInt(br.readLine()) * Integer.parseInt(br.readLine());
String str = String.valueOf(val);
for (int i = 0; i < str.length(); i++) {
arr[(str.charAt(i) - 48)]++;
}
for (int v : arr) {
System.out.println(v);
}
}
}
입력 받은 세 개의 수를 곱한 결과인 문자열 result
내에서 0 ~ 9 까지 탐색
Character.fotDigit()
메소드와 String.charAt()
메소드를 사용하여 같은 문자인지 비교 후 값 증가
결과 배열인 arr
의 모든 값 출력
풀이 2
는 구글에서 찾은 개선 코드. Scanner
보다 빠른 BufferedReader
를 사용하였으며, 중첩 반복문을 사용하지 않아 속도가 훨씬 빠르고, 메모리도 적게 사용함
풀이 1
의 결과
풀이 2
의 결과