문제
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
댓글
댓글 쓰기