문제 출처: www.acmicpc.net/problem/2577
1. 코드
#include <iostream>
using namespace std;
int main(void)
{
int a, b, c, mul;
int arr[10] = {0, };
cin >> a >> b >> c;
mul = a * b * c;
while (mul != 0)
{
int remain = mul % 10;
for (int i = 0; i < 10; i++)
{
if (i == remain)
arr[i]++;
}
mul /= 10;
}
for (int i = 0; i < 10; i++)
cout << arr[i] << endl;
return 0;
}
2. 풀이
int a, b, c, mul;
int arr[10] = {0, };
문제는 a, b, c를 곱한 값의 수가 각각 몇개가 있는지 알아내는 것이다. 그래서 그것들을 배열을 이용하여 풀어볼 것이다. 먼저 배열의 크기가 10으로 설정하고 배열의 값에 전체 0으로 초기화시킨다.
cin >> a >> b >> c;
mul = a * b * c;
그리고 a, b, c를 입력받고 곱해준다.
while (mul != 0)
곱한 값이 0이 아니라면 실행을 시켜주는데
int remain = mul % 10;
곱한 값에 10을 나누었을 때 나머지 값을 전달받는다.
for (int i = 0; i < 10; i++)
{
if (i == remain)
arr[i]++;
}
그리고 나머지 값이 0~9 중 무엇인지 확인하고 해당하는 인덱스값을 찾으면 해당 인덱스의 배열의 값을 증가시킨다.
mul /= 10;
그리고 10을 나누어준다.
for (int i = 0; i < 10; i++)
cout << arr[i] << endl;
위에서 반복문이 종료가 되었다면 배열에 저장된 값을 출력예제에 맞게 출력해준다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 10757번: 큰 수 A+B [C++] (0) | 2021.01.17 |
---|---|
백준 알고리즘 3052번: 나머지 [C++] (0) | 2021.01.06 |
백준 알고리즘 2562번: 최댓값 (0) | 2020.12.26 |
백준 알고리즘 10818번: 최소, 최대 [C++] (0) | 2020.12.21 |
백준 알고리즘 10951번: A+B - 4 [C++] (0) | 2020.12.19 |