(백준)2577 숫자의 개수 풀기

DevSeoRex·2022년 6월 7일
0

백준

목록 보기
6/12

문제의 요지는 세 자리로 이루어진 자연수 A,B,C가 주어지고 A x B x C 를 한 뒤, 0~9 까지 각각 몇개가 쓰였는지 구하는 문제다.

예를 들면 , 158 266 427 = 17037300 이 되므로, 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰인 것이다.

Step1.

Scanner sc = new Scanner(System.in);		
		int a = sc.nextInt(); 
        int b = sc.nextInt(); 
        int c = sc.nextInt();
		String result = String.valueOf((a*b*c));
		int[] arr = new int[10];
		String str = "0123456789";

a,b,c 값을 각각 Scanner로 입력 받은 후에, result 변수에 a,b,c를 곱한 결과를 문자열로 만든다.
그리고 0~9 까지 총 10개의 숫자의 사용 빈도수를 체크할 배열 arr을 선언해주고, 한자리씩 잘라서 비교할 문자열 str을 선언해준다.

Step2

for(int i=0; i<str.length(); i++) {
			for(int j=0; j<result.length(); j++) {
				if(str.charAt(i) == result.charAt(j)) {
					arr[i] += 1;
				}
			}
		}

str의 길이 만큼 for문을 반복하고 또 그 안에서 이중 for문으로, charAt() 메서드로 한 글자씩 잘라서 비교해준다. 만약 비교해서 똑같은 값이 나온다면 arr 배열에 1을 더한다.

예를 들면 str.charAt(0) = '0' 이다, '0'이 result안에 몇개 포함되어 있는지 세서 arr배열에 저장해주는 것이다. arr[0]은 0이 몇개 포함되어 있는지 센 갯수 이므로 1,2,3, 숫자가 늘어날 때마다 따로 배열에 저장되게 된다(인덱스 별로)

Step3

for(int i=0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}

인덱스 별로 출력해주는 코드다.
0~9 까지 사용빈도수를 반복문으로 뽑아내어 준다.

전체 코드

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();
		String result = String.valueOf((a*b*c));
		int[] arr = new int[10];
		String str = "0123456789";		
		for(int i=0; i<str.length(); i++) {
			for(int j=0; j<result.length(); j++) {
				if(str.charAt(i) == result.charAt(j)) {
					arr[i] += 1;
				}
			}
		}		
		for(int i=0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

0개의 댓글