[BOJ/C++] 2577 숫자의 개수

햅쌀이·2023년 5월 22일
1

✍🏻 Algorithm

목록 보기
14/22
post-thumbnail

문제 링크 https://www.acmicpc.net/problem/2577

📝 문제

문제 설명
세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.

예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.

💻 코드

- 자료형 변환

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int A, B, C;
    cin >> A >> B >> C;
    
    int result = A * B * C;
    
    string str = to_string(result);
    int arr[11] = { 0, };
    
    for (int i: str) {
        arr[i - '0'] += 1;
    }
    
    for (int i=0; i<10; i++) {
        cout << arr[i] << "\n";
    }
}

- 몫, 나머지 활용

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int A, B, C;
    cin >> A >> B >> C;
    
    int result = A * B * C;
    int arr[10] = {0, }; 
    
    while (result != 0) {
        arr[result % 10]++;
        result /= 10;
    }
    
    for (int i: arr) {
        cout << i << "\n";
    }
}

📌 해결방법

  1. 세개의 숫자의 곱을 구한 뒤에 문자열로 변환
  2. 각 자릿수에서 0 ~ 9 가 몇 번 나왔는지 카운트
  3. arr[str[i] - '0'] 와 같이 문자열인 값들을 숫자형태로 변환해주기

💡 배운 점

- for-each 반복문

for (auto i: 배열이름)

  • auto
    • 반복자 i의 데이터 타입
    • 배열의 타입에 따라 자료형이 결정 됨
  • i
    - 배열의 원소들이 순서대로 출력됨
# arr의 원소들이 순서대로 출력

for (int i: arr) {
    cout << i << "\n";
}

✔ 느낀 점

파이썬으로 풀었을 때 간단한 문제들도 조금 생각을 하게되는..^^; 휴

profile
C++과 파이썬 공부중

2개의 댓글

comment-user-thumbnail
2023년 5월 22일

생각하는 힘을 기르는 모습 보기 좋습니다^^

1개의 답글