문제 풀이/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]); //출력
}
}
}