https://www.acmicpc.net/problem/2577
2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
www.acmicpc.net
코드 (C)
#include <stdio.h>
int main()
{
int a, b, c, arr[10] = {0};
scanf("%d %d %d", &a, &b, &c);
int result = a * b * c;
while (result != 0)
{
arr[result % 10]++;
result /= 10;
}
for (int i = 0; i < 10; i++) printf("%d \n", arr[i]);
return 0;
}
코드 (C++)
#include <iostream>
using namespace std;
int main()
{
int a, b, c, arr[10] = {0};
cin >> a >> b >> c;
int value = a * b * c;
while (value != 0)
{
arr[value % 10]++;
value /= 10;
}
for (int i = 0; i < 10; i++) cout << arr[i] << "\n";
return 0;
}
코드 설명
입력받은 세 수를 곱한 값을 result(value)에 저장한다.
0~9까지 숫자가 몇 번 쓰였는지를 저장하기 위해 배열을 선언하고 0으로 초기화한다.
result가 0이 될 때까지 반복문을 돈다.
나머지 값을 구하고 그 값을 배열의 인덱스로 사용해서 저장된 값에 1을 더해나간다.
그 후 result를 10으로 나눠가며 위 과정을 반복한다.
반복문이 끝나면 다시 0부터 9까지의 개수를 출력하는 반복문을 이용해 결과를 출력한다.
느낀 점
배열의 인덱스 값을 나머지 값으로 사용해서 금방 풀었다.
'PS (C, C++)' 카테고리의 다른 글
[백준/C & C++] 1233 주사위 (0) | 2022.09.19 |
---|---|
[백준/C & C++] 3034 앵그리 창영 (0) | 2022.09.15 |
[백준/C & C++] 25305 커트라인 (0) | 2022.09.15 |
[백준/C & C++] 15813 너의 이름은 몇 점이니? (0) | 2022.09.11 |
[백준/C & C++] 5565 영수증 (0) | 2022.09.07 |