문제 풀이/BAEKJOON

[백준/JAVA] 2577번. 숫자의 개수

망고 ෆ 2021. 7. 28. 15:05
charAt()

 

charAt()는 특정 위치의 문자를 반환해준다.

예를 들어 String str = "Mango";라고 선언했을 때 특정 위치의 문자를 반환하는 방법은 다음과 같다.

public class charAt {

	public static void main(String[] args) {
		String str = "Mango";
		System.out.println(str.charAt(0)); //M 출력
		System.out.println(str.charAt(1)); //a 출력
		System.out.println(str.charAt(2)); //n 출력
		System.out.println(str.charAt(3)); //g 출력
		System.out.println(str.charAt(4)); //o 출력
	}

}

만약, 숫자값으로 저장된 문자열을 그대로 숫자 값으로 출력하고 싶은 경우 ASCII표에 의해 48 혹은 '0'을 뺀 후 출력하면 된다.

public class charAt {

	public static void main(String[] args) {
		String str = "12345";
		System.out.println(str.charAt(2)-48); //3 출력
		System.out.println(str.charAt(3)-'0'); //4 출력
	}

}

참조) ASCII표

 

 

문제 
 

2577번: 숫자의 개수

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

www.acmicpc.net

 

 

풀이 
import java.io.*;

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()); //세 개의 자연수 A,B,C 입력
        int result = A * B * C; //AxBxC 결과 저장
        
        int[] arr = new int[10]; //AxBxC 값의 최대 자릿수는 10자리이므로 int[10] 배열 선언
        String num = String.valueOf(result); //result값을 int형에서 문자열로 변환
        
        //String 타입의 num을 charAt()을 이용해 한 문자씩 받는다.
        //이때, 아스키코드표에 의해 48을 빼주면 해당 문자의 숫자값을 얻을 수 있다.
        for(int i=0; i<num.length(); i++){
            arr[num.charAt(i)-48]++; //해당 숫자를 배열의 인덱스로 지정하고 나올때 마다 1씩 증가
        }
        for(int i=0; i<10; i++){
            System.out.println(arr[i]); //출력
        }
    }
}