https://www.acmicpc.net/problem/2577
- 문제
- 문제 풀이
백준 2577번 숫자의 개수는 브론즈 2 난이도의 수학 및 구현 문제이다. 이 문제에서는 3개의 세 자릿수 A, B, 그리고 C가 주어진다. 그리고 A × B × C의 값에서 0부터 9까지 각각의 숫자가 몇 번씩 있는지를 출력하면 된다.
한번 문제에서 주어진 예시를 보겠다.
EX) A = 150, B = 266, C = 427
A × B × C = 17037300이다.
0이 3번, 1이 1번, 3이 2번, 7이 2번씩 있다.
따라서 3102000200을 각각 다른 줄에 써서 출력하면 된다.
이 문제에서는 각 수의 count를 세야 한다. 여기서 배열을 쓰면 간단하게 풀 수 있다. 크기가 10인 int형 배열 count를 선언한다. 그러면 초기에는 인덱스가 0부터 9까지 있으므로 0부터 9의 count를 쉽게 저장할 수 있다.
그리고 A × B × C의 값을 String형으로 저장한다. 그러면 for-loop을 돌렸을 때 숫자 하나하나를 쉽게 볼 수가 있기 때문이다. 위에서 풀었던 예시를 다시 한번 보겠다.
A × B × C의 값은 17037300이었다. 이 값을 String형 변수 s로 저장한다. 그리고 for-loop을 i = 0부터 i < s.length()까지 돌리고 count [Character.getNumericValue(s.charAt(i))]++ 해준다. 이게 무슨 함수냐면 s.charAt(i)를 하면 A × B × C의 값의 숫자 하나가 나오고 배열 count의 그 값 인덱스를 +1 해준다는 것이다. 자세한 코드는 밑에 있다.
- 코드
import java.io.*;
import java.util.*;
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());
int[] count = new int[10];
String s = Integer.toString(a * b * c);
for (int i = 0; i < s.length(); i++) {
count[Character.getNumericValue(s.charAt(i))]++;
}
for (int i = 0; i < 10; i++) {
System.out.println(count[i]);
}
}
}
'백준' 카테고리의 다른 글
[백준] 10951번 : A+B - 4 – JAVA [자바] (0) | 2022.07.06 |
---|---|
[백준] 11022번 : A+B - 8 – JAVA [자바] (0) | 2022.07.06 |
[백준] 10818번 : 최소, 최대 – JAVA [자바] (0) | 2022.07.06 |
[백준] 1110번 : 더하기 사이클 – JAVA [자바] (0) | 2022.07.06 |
[백준] 14681번 : 사분면 고르기 – JAVA [자바] (0) | 2022.07.06 |
댓글