본문 바로가기
백준(Baekjoon)

[백준] 2577번: 숫자의 개수 - 자바

by IT 정복가 2022. 5. 17.
728x90

https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net


[문제]


[코드]

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 cnt = 0;
		String mul = Integer.toString(A*B*C);
		
		for(int i = 0; i < 10; i++) {
			for(int j = 0; j < mul.length(); j++) {
				if(mul.charAt(j)-'0' == i) 
					cnt++;
			}
			System.out.println(cnt);
			cnt = 0;
		}
		
		sc.close();
	}
}

[설명]

1. A,B,C를 입력 받는다.

2. 1부터 9까지의 수를 몇 번 사용했는지 알기 위해 일단 cnt 변수를 0으로 초기화 해 놓는다.

3. A*B*C한 결과를 문자열로 변환하는 Integer.toString()를 사용해 문자열 mul에 넣어준다.  

4. 1부터 9까지 수 중에서 몇 번 사용되었는지 알기위해 for문을 작성해준다.

5. for문안에 또 다른 for문을 작성하는데 0부터 mul의 길이까지로 범위를 지정해준다.

6. if(mul.charAt(j)-'0') == i >> 만약 문자열 mul의 j번째 문자가 i와 같다면 cnt를 증가한다는 뜻이다.

7. 안쪽 for문을 빠져나와 cnt를 출력 해주고 다시 0으로 초기화 해준다.

*a.charAt(0): 문자열 a의 0번째 문자를 반환해주는 코드이다. 

 a.charAt(0)-'0'으로 작성하지 않으면 다 0으로 출력되니 주의하기 바람


[결과]

 

728x90