[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);
}
위 코드는 아래와 같이 작동합니다.
- 10개의 수를 숫자형으로 받아 배열 nums 에 저장합니다.
- 10개의 수 각각을 돌며 아래와 같은 과정을 거칩니다.
- int 타입을 char [] 타입으로 변환합니다.
- 각 자리수를 돌며 문자의 아스키코드에 매칭되는 10진수 숫자로 바꿔 누적합니다.
- 최대값과 최소값을 갱신합니다.
코드
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);
}
}
}
댓글남기기