728x90
풀이 🎉
코드 1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
int B = Integer.parseInt(br.readLine());
int C = Integer.parseInt(br.readLine());
String SUM = A * B * C + "";
String[] arr = SUM.split("");
int[] num = new int[arr.length];
for(int i = 0; i < arr.length; i++) {
num[i] = Integer.parseInt(arr[i]);
}
int[] cnt = new int[10];
for(int i = 0; i < num.length; i++) {
cnt[num[i]]++;
}
for(int i=0; i<cnt.length; i++) {
System.out.println(cnt[i]);
}
}
}
처음에는 String 타입의 숫자를 잘라서 int 배열에 넣는 식으로 코드를 작성을 했다.
코드 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 A = Integer.parseInt(br.readLine());
int B = Integer.parseInt(br.readLine());
int C = Integer.parseInt(br.readLine());
br.close();
int[] counts = new int[10];
int number = A * B * C;
while(number > 0) {
counts[number % 10]++;
number /= 10;
}
for(int i=0; i<counts.length; i++) {
System.out.println(counts[i]);
}
}
}
숫자를 10으로 나눈 나머지의 인덱스의 값을 1씩 올리는 코드이다.
또한, 1번 코드처럼 문자열 -> 숫자로 바꿀 필요도 없어서 코드가 훨씬 깔끔해졌다.
연산이 많아서인지 2번 코드가 메모리를 조금 더 사용하지만 큰 차이가 없기 때문에 2번 코드를 쓸 것 같다. ㅎㅎ..
728x90
'Algorithms 🚀 > Baekjoon' 카테고리의 다른 글
[백준/8958번] OX퀴즈 (0) | 2021.02.16 |
---|---|
[백준/3052번] 나머지 (0) | 2021.02.02 |
[백준/1546번] 평균 (0) | 2021.02.02 |
[백준/10818번] 최소, 최대 (0) | 2021.02.01 |
[백준/1541번] 잃어버린 괄호 [Java] (0) | 2021.01.21 |