내 코드
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 100 < a, b, c && a, b ,c < 1_000
int avg = (sc.nextInt()*sc.nextInt()*sc.nextInt());
String str = Integer.toString(avg);
for(int i = 0; i < 10; i++) {
int count = 0;
for(int j = 0; j < str.length(); j++) {
if((str.charAt(j) - '0') == i) {
count++;
}
}
System.out.println(count);
}
}
}
String 문자열과 char 배열을 활용하는 문제로 내 경우는 String 문자열을 이용하는 방법을 선택했다. 입력 값 3개를 nextInt()로 받고 그것을 Integer.toString() 메소드로 받은 값을 String 으로 타입을 변환시킨다.
첫 반복문으로 0~9 까지 각각의 수를 검사할 반복문으로 두 번째 반복문이 끝날 때마다 count로 센 개수를 0으로 초기화 해주고, 이 두 번째에서는 모든 요소를 검사하기 위해서 charAt()을 통해 index의 문자와 i 가 같은지 비교하여 같은 경우 count 수를 증가시킨다. 모든 문자는 문자 '0'(유니코드 : 48)을 더한 상태로 존재하기 때문에 숫자로 변환하기 위해서는 charAt()의 요소들을 -'0' 또는 -48을 해주어야 숫자로 변환된다.
생각해야 할 것
- charAt() 사용에 따른 문자 데이터 타입을 숫자로 형변환 해야한다는 점
배우게 된 점
- Scanner() 메서드를 이용한 입력 값 받는 것은 for문뿐 아니라 정해진 입력 값의 경우 곱 연산으로 처리할 수 있다.
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 1546번/1차원 배열] 평균 - Java (0) | 2021.03.15 |
---|---|
[백준 3052번/1차원 배열] 나머지 - Java (0) | 2021.03.15 |
[백준 2562번/1차원 배열] 최댓값 - Java (0) | 2021.03.15 |
[백준 10818번/1차원 배열] 최소, 최대 - Java (0) | 2021.03.15 |
백준 10952번 while문 A + B ⑤ - Java (0) | 2021.03.12 |