문제 링크
https://www.acmicpc.net/problem/2577
나의 코드 (java)
import java.util.Scanner;
public class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
// 입력 값 개수
int n = 3;
// 배열 생성
int arr[] = new int[n];
for (int i=0; i<n; i++){
arr[i] = sc.nextInt();
}
// 숫자의 쓰임을 확인할 배열
int arr2[] = new int[10];
// 입력 받은 세 숫자의 곱
int abc = arr[0] * arr[1] * arr[2];
while (true){
// 반복문을 종료할 조건
if (abc == 0){
break;
}
// 나머지에 해당하는 배열 카운트 증가
arr2[abc % 10] += 1;
// 10씩 나눠가며 숫자를 줄임
abc = abc / 10;
}
// 결과
for (int i=0; i<10; i++){
System.out.println(arr2[i]);
}
}
}
이 문제의 핵심은 while문에서 세 수의 곱인 abc % 10으로 마지막 자리의 숫자가 어떤 것인지 검증하는 것입니다.
예를 들어 627이라는 값이라면 첫 번째 while에서 7을 찾아서 arr2[7]에 +1을 해줄 것입니다.
그리고 abc = abc / 10; 에서 627을 62로 바꿀 것입니다.
다음 while문에서 62에 2를 찾아서 arr2[2]에 값을 +1을 하고 abc를 10을 나누어 6이라는 값으로 만들어 줄 것입니다.
다음 while에서 6%10을 통해서 6을 찾고 arr2[6]에 값을 +1 하고 abc를 10으로 나누어 0이라는 값을 만들어 줍니다.
다음 while문에서 if문에 걸려서 break 되어 while문을 빠져나옵니다.
배열 arr2에 0부터 9까지를 돌면서 몇 번 카운팅 되었는지 출력합니다.
'코딩공부 > 백준 (java)' 카테고리의 다른 글
[백준 1546] 평균 (java) (0) | 2021.07.05 |
---|---|
[백준 3052] 나머지 (java) (0) | 2021.07.05 |
[백준 2562] 최댓값 (java) (0) | 2021.07.05 |
[백준 10818] 최소, 최대 (java) (0) | 2021.07.05 |
[백준 1110] 더하기 사이클 (java) (0) | 2021.07.02 |
댓글