2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
www.acmicpc.net
배운 것
int to string: string s = to_string(res);
정답 풀이1
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char *argv[]) {
/*
0으로 초기화를 해야한다.
아니면 garbage value, 즉 쓰레기 값이 들어있게 된다.
이 때 0으로 초기화 하는 방법은 {} 괄호만 쳐주거나,
{0,}, {0} 방식이 있다.
*/
int count[10] = {};
int a, b, c;
cin >> a >> b >> c;
int res = a * b * c;
/*
std::to_string(val)
숫자(int, long, float, double 등)를 문자열(string)으로
변환하여 반환해주는 함수를 사용한다.
*/
string s = to_string(res);
/*
숫자 0은 문자로는 아스키 값 48에 해당하므로,
인덱스 숫자 0을 얻기 위해서는 48을 빼주어야 한다.
마찬가지로 문자 '1'을 숫자 1로 얻고자 한다면 48을 빼주어야 49 - 48 = 1로
숫자 1을 얻을 수 있다.
아스키 값이 기억이 안난다면, '0' 이렇게 문자로 빼주어도 된다.
*/
for (char ch : s) { // 문자열의 문자들을 하나씩 꺼내온다. (foreach문 활용)
// 문자를 숫자로 변환한 값의 인덱스를 1 증가시킨다.
count[ch - '0']++;
}
// 0 부터 9까지 count 배열을 출력한다. (foreach문 사용)
for (int v : count) {
cout << v << "\n";
}
return 0;
}
정답 풀이2
// Authored by : BaaaaaaaaaaarkingDog
// Co-authored by : OceanShape
// http://boj.kr/fefbce1d30c9442db611909c690df1a8
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int A, B, C;
cin >> A >> B >> C;
int t=A*B*C;
int d[10] = {};
// 계산 결과를 자릿수별로 확인하여 저장
while (t>0) {
d[t%10]++;
t/=10;
}
for (int i=0; i<10; ++i) cout << d[i] << '\n';
}
[백준] 2577번 : 숫자의 개수 - [C++] (tistory.com)
[백준] 2577번 : 숫자의 개수 - [C++]
https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 문제 이 번..
st-lab.tistory.com
'Algorithm > C++' 카테고리의 다른 글
[백준 3273] 두 수의 합 (0) | 2022.08.09 |
---|---|
[백준 1475] 방 번호 (0) | 2022.08.09 |
[백준 10808] 알파벳 개수 (0) | 2022.08.08 |
[백준 1159] 농구 경기 (0) | 2022.07.27 |
[이코테] 숫자 카드 게임(그리디) (0) | 2022.06.29 |
댓글