본문 바로가기

Projects/백준 문제

백준 2577번 자바 문제 숫자의 개수

반응형

알고리즘 문제를 풀 때는 확실히 프로그램상으로 실제로 어떻게 답을 도출해낼 수 있는 지를 생각하고 이후 코드를 짜는 것이 중요함을 느낀다.

 

단계적인 로직을 따른다.

 

A, B, C가 입력되어야 하므로, 스캐너를 이용해 입력값을 받는다.

 

이후 A*B*C를 하는데, 이는 문제의 조건에 해당하므로, for문이나, 최종 프린트문에 들어가지 않아도 되므로

메인 함수에 작성한다.

 

숫자를 각각 세기 위해서는 숫자를 나눠야 하므로, 나눌 수 있는 단위인 스트링으로 형변환해준다.

 

형변환한 숫자를 하나씩 나눌 수 있는 함수를 사용하여 new arraylist 안에 넣어준다.

 

실제로 출력해야 하는 부분에 해당하는 1~9의 사용개수를 세기 위해

 

i = 0; i < 10까지 조건을 맞춰주고

 

리스트 안에 원소 개수를 세어주는 collection.frequency함수를 사용한다.

 

다만, 세기 위해서는 데이터타입이 일치해야 하므로, 현재 리스트 상의 데이터가 스트링이므로,

단위를 셀 수 있도록 i를 스트링으로 형변환해준다.

 

이후 출력해주면 정답이 나온다.

 

 

 

 

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
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 D = A*B*C;
		
		
		String number = String.valueOf(D);
		
		ArrayList<String> nums = new ArrayList<>(Arrays.asList(number.split("")));
		
		
		for(int i=0;i<10;i++) {
			String str_i = String.valueOf(i); 
			int fqc = Collections.frequency(nums, str_i);
						
			System.out.println(fqc);
			
		}
		sc.close();
		
		
		
		
		
		
	}

}
반응형