✏️ PS/Boj
[ C++ ] 백준 2577번: 숫자의 개수
수구리
2021. 10. 6. 20:58
반응형
안녕하세요? 수구리입니다.
이번 백준 문제풀이도 마찬가지로 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까지의 숫자들이 총 몇번 쓰였는지에 대한 값이 저장되어 있다.
반응형