반응형
-해법
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int arr[] = new int[10];
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
String mul = String.valueOf(a*b*c);
for(int i=0;i<mul.length();i++) {
arr[mul.charAt(i)-'0']++;
}
for(int i=0;i<10;i++) {
System.out.println(arr[i]);
}
in.close();
}
}
세 수의 곱셈 결과에 0~9의 숫자가 몇 개씩 존재하는지 확인하는 문제이다. 이를 위해선 곱한 결과로 나오는 숫자를 자릿수 단위로 쪼개는 과정이 우선되어야 한다. 이를 위해서 String 클래스의 charAt() 메서드를 사용하고자 하였고, String.valueOf() 메서드로 구현이 가능했다.
0~9의 개수를 저장할 1차원 배열을 만들어 놓은 뒤, 각 자릿수에 해당하는 숫자를 인덱스로 활용해 배열 값을 증가시킨다. 이 과정에서 인덱스 범위 에러가 발생해 확인해보니 10개의 배열을 만들었는데 49번 인덱스에 접근하고자 한다고 해서 의아하였다. 알고 보니 150 * 266 * 427의 결과인 17037300에서 첫 번째 숫자가 1인데, charAt()메소드로 인해 문자형 데이터 타입으로 인식되어 1의 아스키코드값인 49가 적용되었던 것이다. 이는 아스키코드값이 48인 '0'을 빼주어 해결하였다.
반응형