코딩테스트 - 프로그래머스/Lv. 0

[53] JAVA 자릿수 더하기

유혁스쿨 2023. 11. 21. 12:29
728x90
반응형

문제 설명

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요



제한사항

  • 0 ≤ n ≤ 1,000,000


입출력 예

 

n result
1234 10
930211 16

 

입출력 예 #1

  • 1 + 2 + 3 + 4 = 10을 return합니다 .

 

 

입출력 예 #2

  • 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.

 


[나의 풀이]

import java.util.Arrays;
class Solution {
    public int[] solution(int n) {
        return Arrays.stream(String.valueOf(n).split("")).mapToInt(Integer::pareseInt).sum();
    }
}

[풀이과정] 

String의 valueOf(정수).split("") 를 통해 해당 정수를 String배열로 변환하였다.

Arrays.stream을 통해 Stream으로 변환한뒤, mapToInt(Integer::parseInt)로 정수값으로 변환한다음 누적합을 구하였다.

 


[다른 풀이]

import java.util.*;
import java.util.stream.Collectors;

class Solution {
	public List<Integer> solution(int n) {
    	return String.valueOf(n).chars().map(number -> Character.digit(number, Character.LETTER_NUMBER)).sum();
    }
}

 

 

핵심은 String의 chars()와 Character의 digit(), LETTER_NUMBER이다.

String의 chars()메소드는 문자열에 존재하난 각 문자의 ASCII코드값을 포함하는 IntStream을 생성한다.

해당 ASCII코드를 digit()메소드를 통해 현재요소 ASCII코드를 10진법으로 변환한다.

이후 누적합을 계산한다.

728x90
반응형