반응형
안녕하세요? 수구리입니다.
이번 백준 문제풀이도 마찬가지로 1차원 배열에 대해서 풀어보고 있습니다.
문제는 아래 링크에 있습니다.
질문이나 댓글은 언제나 환영입니다!
[ 문제 ] 2577번: 숫자의 개수
[ 나의 풀이 ]
/*
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 |