[SWEA] 8658. Summation

1 분 소요

문제 링크

[SWEA] 8658. Summation


풀이 과정

10개의 수를 입력받아, 각 수의 자리수를 돌며 합을 구하는 문제입니다.


int[] nums = new int[10];
int max = 0, min = Integer.MAX_VALUE;

for (int i = 0; i < 10; i++) nums[i] = sc.nextInt();

for (int i = 0; i < 10; i++) {
    char[] tmp = String.valueOf(nums[i]).toCharArray();
    int sum = 0;

    for (int j = 0; j < tmp.length; j++) sum += tmp[j] - '0';

    max = Math.max(max, sum);
    min = Math.min(min, sum);
}

위 코드는 아래와 같이 작동합니다.

  1. 10개의 수를 숫자형으로 받아 배열 nums 에 저장합니다.
  2. 10개의 수 각각을 돌며 아래와 같은 과정을 거칩니다.
    1. int 타입을 char [] 타입으로 변환합니다.
    2. 각 자리수를 돌며 문자의 아스키코드에 매칭되는 10진수 숫자로 바꿔 누적합니다.
    3. 최대값과 최소값을 갱신합니다.


코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int TC = sc.nextInt();

        for (int tc = 1; tc <= TC; tc++) {
            int[] nums = new int[10];
            int max = 0, min = Integer.MAX_VALUE;

            for (int i = 0; i < 10; i++) nums[i] = sc.nextInt();

            for (int i = 0; i < 10; i++) {
                char[] tmp = String.valueOf(nums[i]).toCharArray();
                int sum = 0;

                for (int j = 0; j < tmp.length; j++) sum += tmp[j] - '0';

                max = Math.max(max, sum);
                min = Math.min(min, sum);
            }

            System.out.println("#" + tc + " " + max + " " + min);
        }
    }
}

카테고리:

업데이트:

댓글남기기