[C++] baekjoon 2577, 2592

oat·2024년 4월 2일

everydayBOJ

목록 보기
45/51

Day 45

2577

문제

code

#include <iostream>
#include <string>

using namespace std;

int main() {
    int num;
    int ans = 1;
    int howMuch[10] = { 0 };

    for (int i = 0; i < 3; i++) {
        cin >> num;
        ans *= num;
    }

    string ansStr = to_string(ans);
    for (char c : ansStr) {
        int digit = c - '0';
        howMuch[digit]++;
    }

    for (int i = 0; i < 10; i++) {
        cout << howMuch[i] << endl;
    }

    return 0;
}

풀이 과정

pow 때문에 정확한 값이 나오지 않아서인지 예제 넣으면 맞게 나오는데 제출했더니 틀려서 전자 뇌의 도움을 받았습니다...

for (char c : ansStr) { ... }: ansStr 문자열을 순회하면서 각 문자(c)를 차례로 가져옵니다. 이때, c는 '1', '2', '3', '4'와 같이 각 자릿수를 나타내는 문자입니다.

int digit = c - '0';: 각 문자(c)는 ASCII 코드 값으로 저장됩니다. 숫자 문자 '0'의 ASCII 코드 값은 48이며, 이를 빼면 각 숫자 문자의 실제 숫자 값(0부터 9까지)을 얻을 수 있습니다. 예를 들어, '1' 문자의 ASCII 코드 값인 49에서 '0' 문자의 ASCII 코드 값인 48을 빼면 숫자 1을 얻을 수 있습니다.
for (char c : ansStr) { ... }: ansStr 문자열을 순회하면서 각 문자(c)를 차례로 가져옵니다. 이때, c는 '1', '2', '3', '4'와 같이 각 자릿수를 나타내는 문자입니다.

int digit = c - '0';: 각 문자(c)는 ASCII 코드 값으로 저장됩니다. 숫자 문자 '0'의 ASCII 코드 값은 48이며, 이를 빼면 각 숫자 문자의 실제 숫자 값(0부터 9까지)을 얻을 수 있습니다. 예를 들어, '1' 문자의 ASCII 코드 값인 49에서 '0' 문자의 ASCII 코드 값인 48을 빼면 숫자 1을 얻을 수 있습니다.

예제만 맞은 코드

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    int num;
    int ans = 1;
    int howMuch[10] = { 0 };

    for (int i = 0; i < 3; i++) {
        cin >> num;
        ans *= num;
    }

    int ans2 = ans;
    int count = 0;
    while (ans2 > 0) {
        ans2 = ans2 / 10;
        count++;
    }

    for (int j = count; j > 0 ; j--) {
        int dev = pow(10, j);
        int time = ans / dev;
        ans %= dev;
        howMuch[time]++;
    }
    
    for (int i = 0; i < 10; i++) {
        int n = howMuch[i];
        cout << n << endl;
    }

2592

문제

code

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    int num;
    int sum = 0;
    int count[1000] = { 0 };
    
    for (int i = 0; i < 10; i++) {
        cin >> num;
        sum += num;
        count[num] ++;
    }

    int maxVal = count[0];
    int maxcount;

    for (int i = 1; i < 1000; i++) {
        if (count[i] > maxVal) {
            maxVal = count[i];
            maxcount = i;
        }
    }

    cout << sum / 10 << endl;
    cout << maxcount;
}

풀이 과정

나온 숫자의 인덱스의 값을 하나씩 늘려 입력된 횟수를 알 수 있게 하였다

0개의 댓글