본문 바로가기
Algorithm/C++

[백준 2577] 숫자의 개수

by imagineer_jinny 2022. 8. 9.

2577번: 숫자의 개수 (acmicpc.net)

 

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

댓글