백준(BEAKJOON) | 단계별로 풀어보기
5-3단계 #2577번
2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다.
www.acmicpc.net
문제 |
세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
입력 |
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다.
출력 |
첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.
🥕 a, b, c를 곱한 값(mul)에서 0부터 9까지의 숫자가 각각 몇 번 쓰였는지는 mul을 계속해서 나눴을 때의 나머지로 구할 수 있다.
mul을 나눈 나머지 -> 0~9까지의 숫자가 각각 몇 번 쓰였는 지
mul = mul / 10
무한 반복문을 통해 a, b, c를 곱한 값(mul)을 10으로 나눈 나머지(0~9)를 구하고 배열을 생성하여 값을 증가시킨다.
mul의 값이 mul을 10으로 나눈 몫으로 계속 갱신될 수 있도록 mul = mul / 10으로 코드를 짠다.mul이 0이 되었을 때 무한 반복문을 끝내면 된다. (숫자를 계속해서 나눴을 때 최종적으로 몫이 0이 되므로)
-코드 첨부-
C언어
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
int main(void)
{
int a, b, c, mul;
int num[10]={0,};
scanf("%d\n%d\n%d",&a,&b,&c);
mul = (a*b*c);
while(1){
num[mul%10]++;
mul= mul /10;
if(mul < 1){
break;
}
}
for(int i=0; i<10; i++){
printf("%d\n", num[i]);
}
return 0;
}
|
cs |
'Coding > Baekjoon(백준)' 카테고리의 다른 글
[Python, C] 백준 1546번. 평균. (0) | 2021.01.23 |
---|---|
[C언어] 백준 3052번. 나머지. (0) | 2021.01.20 |
[C언어] 백준 2562번. 최댓값. (0) | 2021.01.19 |
[Python, C] 백준 10818번. 최소, 최대. (0) | 2021.01.18 |
[Python, C] 백준 1110번. 더하기 사이클. (0) | 2021.01.12 |