
#include <iostream>
#include <string>
using namespace std;
int main() {
int num;
int ans = 1;
int howMuch[10] = { 0 };
for (int i = 0; i < 3; i++) {
cin >> num;
ans *= num;
}
string ansStr = to_string(ans);
for (char c : ansStr) {
int digit = c - '0';
howMuch[digit]++;
}
for (int i = 0; i < 10; i++) {
cout << howMuch[i] << endl;
}
return 0;
}
pow 때문에 정확한 값이 나오지 않아서인지 예제 넣으면 맞게 나오는데 제출했더니 틀려서 전자 뇌의 도움을 받았습니다...
for (char c : ansStr) { ... }: ansStr 문자열을 순회하면서 각 문자(c)를 차례로 가져옵니다. 이때, c는 '1', '2', '3', '4'와 같이 각 자릿수를 나타내는 문자입니다.
int digit = c - '0';: 각 문자(c)는 ASCII 코드 값으로 저장됩니다. 숫자 문자 '0'의 ASCII 코드 값은 48이며, 이를 빼면 각 숫자 문자의 실제 숫자 값(0부터 9까지)을 얻을 수 있습니다. 예를 들어, '1' 문자의 ASCII 코드 값인 49에서 '0' 문자의 ASCII 코드 값인 48을 빼면 숫자 1을 얻을 수 있습니다.
for (char c : ansStr) { ... }: ansStr 문자열을 순회하면서 각 문자(c)를 차례로 가져옵니다. 이때, c는 '1', '2', '3', '4'와 같이 각 자릿수를 나타내는 문자입니다.
int digit = c - '0';: 각 문자(c)는 ASCII 코드 값으로 저장됩니다. 숫자 문자 '0'의 ASCII 코드 값은 48이며, 이를 빼면 각 숫자 문자의 실제 숫자 값(0부터 9까지)을 얻을 수 있습니다. 예를 들어, '1' 문자의 ASCII 코드 값인 49에서 '0' 문자의 ASCII 코드 값인 48을 빼면 숫자 1을 얻을 수 있습니다.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int num;
int ans = 1;
int howMuch[10] = { 0 };
for (int i = 0; i < 3; i++) {
cin >> num;
ans *= num;
}
int ans2 = ans;
int count = 0;
while (ans2 > 0) {
ans2 = ans2 / 10;
count++;
}
for (int j = count; j > 0 ; j--) {
int dev = pow(10, j);
int time = ans / dev;
ans %= dev;
howMuch[time]++;
}
for (int i = 0; i < 10; i++) {
int n = howMuch[i];
cout << n << endl;
}

#include <iostream>
#include <cmath>
using namespace std;
int main() {
int num;
int sum = 0;
int count[1000] = { 0 };
for (int i = 0; i < 10; i++) {
cin >> num;
sum += num;
count[num] ++;
}
int maxVal = count[0];
int maxcount;
for (int i = 1; i < 1000; i++) {
if (count[i] > maxVal) {
maxVal = count[i];
maxcount = i;
}
}
cout << sum / 10 << endl;
cout << maxcount;
}
나온 숫자의 인덱스의 값을 하나씩 늘려 입력된 횟수를 알 수 있게 하였다