[ C++ ] 백준 2577번: 숫자의 개수
✏️ PS/Boj

[ C++ ] 백준 2577번: 숫자의 개수

반응형

 

안녕하세요? 수구리입니다.

 

이번 백준 문제풀이도 마찬가지로 1차원 배열에 대해서 풀어보고 있습니다.

 

문제는 아래 링크에 있습니다.

 

질문이나 댓글은 언제나 환영입니다!

 

 

[ 문제 ] 2577번: 숫자의 개수

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

 

 

[ 나의 풀이 ]

/*
	date : 2021.09.02
	problom : 2577
	title : 숫자의 개수
	discribe : 각 숫자가 몇 번 나왔는지 저장하기 위해 일차원 배열을 생성
*/
#include <iostream>
#include <vector>
#include <algorithm>
#define all(v) v.begin(), v.end()
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	vector<int> v(10, 0);
	int a, b, c, q;
	int big;
	cin >> a >> b >> c;
	big = a*b*c;

	while (big > 0) {
		q = (big % 10);
		v[q]++;
		big /= 10;
	}

	for (int i = 0; i<10; i++)
		cout << v[i] << "\n";

	return 0;
}

 

 

 

[ 설명 ]

1. 크기가 10인 int형 vector를 선언하면서 모두 0으로 초기화

2. 변수들을 선언

3. a, b, c 세 정수를 입력

4. big 변수에 a, b, c의 곱을 계산한 값을 저장

5. big이 0보다 크다면 while문을 반복

6. q에는 big을 10으로 나눈 나머지 값이 들어가며 v[q] 즉, 나머지 값이 곧 0~9까지의 숫자 중 하나이므로 해당 배열의 index가 된다. 따라서, v[q]에 값을 하나 증가시켜준다.

7. big을 앞으로 한자리 당겨주기 위해서 10으로 나눈다.

8. 이 과정을 반복한 뒤, vector v에는 0부터 9까지의 숫자들이 총 몇번 쓰였는지에 대한 값이 저장되어 있다.

 

 

반응형

'✏️ PS > Boj' 카테고리의 다른 글

[ C++ ] 백준 8958번: OX퀴즈  (0) 2021.10.14
[ C++ ] 백준 4344번: 평균은 넘겠지  (0) 2021.10.11
[ C++ ] 백준 3052번: 나머지  (0) 2021.10.06
[ C++ ] 백준 1546번: 평균  (4) 2021.10.05
[ C++ ] 백준 2562: 최댓값  (0) 2021.10.05