백준 2577, 3052

hyun20·2021년 7월 3일
코드를 #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]부터 저장
배열[인덱스]++--> 인덱스의 값이 나왔으므로 횟수 증가
이후 배열 전체를 훑어보며 숫자 개수/ 나머지 개수 출력

0개의 댓글