https://www.acmicpc.net/problem/2577
1. 문제
2. 풀이
각 숫자의 빈도수를 저장할 1차원 배열을 만든다. 여기서 세 수를 곱한 정수값은 charAt()함수를 사용하기 위해 String으로 변환 하여 charAt(0)부터 끝까지 숫자를 추출하면서 해당하는 배열의 인덱스값을 하나씩 증가해준다.
3. 소스코드
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();
int[] num = new int[10];
String s = Integer.toString(a * b * c);
for (int i = 0; i < s.length(); i++) {
num[s.charAt(i) - '0']++;
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
}
여기서 charAt(i)-'0'을 해주는 이유는 정수로 바꿔주기 위해서인데, 숫자 char(0~9)은 ASCII코드 48부터 시작하므로 48을 빼주면 숫자를 얻을 수 있다. 즉 다음은 같은 표현이다.
★ char를 int로 변환하기(두가지 방법)
char a = '1';
int n = 0;
n = a-48;
char a = '1';
int n = 0;
n = a-'0';
★ ASCII 코드표
'알고리즘 풀이 > 백준(BOJ)' 카테고리의 다른 글
[JAVA/백준15552] 빠른 A+B (0) | 2019.05.26 |
---|---|
[JAVA/백준2579] 계단오르기 - DP (0) | 2019.05.21 |
[JAVA/백준1463] 1로 만들기 - DP (0) | 2019.05.19 |
[JAVA]백준알고리즘 11720/11721/15552/11721 정리 (0) | 2019.01.24 |
[JAVA] 백준알고리즘 2747번 풀이 (0) | 2019.01.21 |