본문 바로가기

algorithm

백준 2577번 숫자의 개수

https://www.acmicpc.net/problem/2577

 

아이디어:

1. 문자열로 변환 후 각 문자에 접근해서 count 변수를 추가하고 출력

2. switch case문 사용

 

// 2577

#include <iostream>
#include <string>

using namespace std;

int main() {

	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int A, B, C, mul;
	string mul_result;
	int count_0 = 0, count_1 = 0, count_2 = 0, count_3 = 0, count_4 = 0;
	int count_5 = 0, count_6 = 0, count_7 = 0, count_8 = 0, count_9 = 0;

	cin >> A >> B >> C;

	mul = A * B * C;
	mul_result = to_string(A * B * C);

	for (int i = 0; i < mul_result.length(); i++) {
		switch (mul_result[i]) {
		case '0':
			count_0++;
			break;
		case '1':
			count_1++;
			break;
		case '2':
			count_2++;
			break;
		case '3':
			count_3++;
			break;
		case '4':
			count_4++;
			break;
		case '5':
			count_5++;
			break;
		case '6':
			count_6++;
			break;
		case '7':
			count_7++;
			break;
		case '8':
			count_8++;
			break;
		case '9':
			count_9++;
			break;
		}
	}

	cout << count_0 << "\n";
	cout << count_1 << "\n";
	cout << count_2 << "\n";
	cout << count_3 << "\n";
	cout << count_4 << "\n";
	cout << count_5 << "\n";
	cout << count_6 << "\n";
	cout << count_7 << "\n";
	cout << count_8 << "\n";
	cout << count_9;

	return 0;
}

 

모범답안:

1. 숫자를 변수가 아닌 배열로 저장

2. 곱한 수(int)를 10으로 나눈 나머지를 배열의 인덱스로 하고 0에서 ++로 증가

3. 배열 순회해서 출력

 

#include <iostream>

using namespace std;

int main() {
	int a = 0, b = 0, c = 0;
	int mul = 0;
	int cnt[10] = { 0, };

	cin >> a >> b >> c;
	mul = a * b * c;

	while (mul) {
		cnt[mul % 10]++;
		mul /= 10;
	}

	for (int i = 0; i < 10; i++) {
		cout << cnt[i] << '\n';
	}

	return 0;
}

'algorithm' 카테고리의 다른 글

백준 4153번 직각삼각형  (0) 2024.11.03
백준 2920번 음계  (0) 2024.11.03
백준 10250번 ACM 호텔  (0) 2024.11.03
백준 31403번 A+B-C  (0) 2024.10.27
백준 2475번 검증수  (0) 2024.10.27