[SW Expert Academy] 8658. Summation



문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW1lwyh6WPwDFARC&categoryId=AW1lwyh6WPwDFARC&categoryType=CODE





풀이

문제에서 10개의 숫자를 입력받는다고 아예 정해줬으므로 10개를 입력받아서 10으로 나눠준 나머지를 전부 더해줘서 가장 큰 결과값과 가장 작은 결과값을 구해주기만 하면 끝.
예를 들어 1375라는 숫자가 있다면, 1375 % 10 = 5이므로 tmp = 5이다. 1의 자리는 계산이 끝났으므로 1375 / 10 = 137로 만들어준다. 다시 137 % 10 = 7이므로 tmp = 5 + 7 = 12이고, 10의 자리 계산이 끝났으므로 137 / 10 = 13, 13 % 10 = 3, tmp = 5 + 7 + 3 = 15, ... 를 반복해주면 되는 것이다.


#include<iostream>

using namespace std;

int main(int argc, char** argv)
{
    int test_case;
    int T;
    cin >> T;
    for(test_case = 1; test_case <= T; ++test_case)
    {
        int num[10];
        int mx = 0;
        int mn = 1000000;
        for(int i = 0; i < 10; i++){
            cin >> num[i];
        }
        for(int i = 0; i < 10; i++){
            int tmp = 0;
            while(num[i] > 0){
                tmp += num[i] % 10;
                num[i] /= 10;
            }
            
            mx = max(mx, tmp);
            mn = min(mn, tmp);
        }
        cout << "#" << test_case << " " << mx << " " << mn << '\n';
    }
    return 0;
}


소스코드 : https://github.com/betterafter/SWEA/blob/master/SWEA8658.cpp

댓글