반응형
https://www.acmicpc.net/problem/21567
문제
세 개의 자연수 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번 쓰였다.
풀이
- 일단 3개의수를 입력할수 있는 변수를 선언하고 3개의 수를 곱하는 mul도 선언한다. (곱하기를 선언할때는) mul=1;로 선언
- 0부터 9까지 각각의 숫자가 몇번씩 쓰였는지 구하기 위해서 10개의 방이 있는 배열을 선언한다. = arr[10]={0, };
- 어떤숫자를 몇번 쓰였는지 알아야하기 때문에 mul값을 0이 될때까지 %10으로 1의자리를 구한다.
- 1의 자리를 아까 쓰였던 arr[10]방에 같은 숫자끼리 방으로 들어간다.
- %10으로 1의 자리를 구했으면 10의자리의 숫자를 더하기 위해 mul값을 0이 될때 까지 10으로 나눠주고 %10을 해주고 그값을 re=0으로 선언해준다.
- 0부터 9까지 10개의 출력을 보여줘야하기 때문에 따로 for문을 만들어 10개의 출력을 보여주게 만든다.
코드
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() {
int arr[10] = { 0, }; // 풀이 2
int a[3]; // 풀이 1
long long mul = 1;
/* long long으로 선언한 이유는 예제입력3에서 곱한 값이 int로 표현하는 범위를 초과했기때문에
젤 큰 정수값을 표현하는 long long 값으로 선언한다.*/
int re = 0;
for (int i = 0; i < 3; i++) {
scanf("%d", &a[i]);
mul *= a[i];
}
for (int i = 0; mul > 0; i++) {
re = mul % 10; // 풀이 3,5
arr[re] += 1; // 풀이 4
mul /= 10; // 풀이 5
}
for (int i = 0; i < 10; i++) // 풀이 6
printf("%d\n", arr[i]);
}
|
cs |
https://www.acmicpc.net/problem/21567
반응형
'백준 > C' 카테고리의 다른 글
[BaeKJoon/C] 백준16394 c 홍익대학교 (0) | 2021.05.18 |
---|---|
[BaeKJoon/C] 백준15680 c 연세대학교 (0) | 2021.05.18 |
[BaeKJoon/C] 백준16673 c 고려대학교에는 공식 와인이 있다. (0) | 2021.05.18 |
[BaeKJoon/C] 백준5522 c 카드 게임 (0) | 2021.05.17 |
[BaeKJoon/C] 백준5543 c 상근날드 (0) | 2021.05.17 |