코드를 #include <iostream>
#include <string>
using namespace std;
int main() {
int a, b, c, result;
cin >> a >> b >> c;
result = a * b * c;
string resultS = to_string(result);
int num[10] = { 0 };
int index;
cout << result << endl;
for (int i = 0; i < resultS.length(); i++) {
index = static_cast<int>(resultS[i]-'0');
num[index]++;
}
for (int i = 0; i <= 9; i++)
cout << num[i] << endl;
}
오답노트
문자값 1을 정수로 변환할 때
static_cast(result[i])가 아니라
static_cast(result[i]-'0')을 해줘야함
아니면 '1'의 아스키 코드값이 정수값으로 나옴
#include <iostream>
#include <string>
using namespace std;
int main() {
int num[10], index, result;
for (int i = 0; i < 10; i++)
cin >> num[i];
int ans[42] = { 0 };//0~41의 나머지
for (int i = 0; i < 10; i++)
{
index=num[i] % 42; //각 숫자를 42로 나눈 나머지를 구함
ans[index]++; //나머지값에 해당하는 인덱스의 값 증가
}
result = 0;
for (int i = 0; i < 42; i++)
{
if (ans[i] != 0) result++;//인덱스 값이 0이 아니면 나머지 개수++
}
cout << result;
}
공통점: 두 문제 모두 나온 값을 인덱스로 저장
0~9, 0~41로 모두 0부터 시작하기 때문에 arr[0]부터 저장
배열[인덱스]++--> 인덱스의 값이 나왔으므로 횟수 증가
이후 배열 전체를 훑어보며 숫자 개수/ 나머지 개수 출력