120906 자릿수 더하기

알파로그·2023년 3월 12일
0

✏️ 문제 설명

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

✏️ 제한사항

  • 0 ≤ n ≤ 1,000,000

✏️ TDD 를 이용한 문제 풀이

📍 Test Setting

    @Test
    @DisplayName("1234 => 10")
    void name() {
        assertThat(new Solution().solution(1234)).isEqualTo(10);
    }

    @Test
    @DisplayName("930211 => 16")
    void name1() {
        assertThat(new Solution().solution(930211)).isEqualTo(16);
    }

    @Test
    @DisplayName("123 => 6")
    void name2() {
        assertThat(new Solution().solution(123)).isEqualTo(6);
    }

📍 V1

매개 변수를 String 으로 변환하고, 다시 char 로 변환해 아스키 코드가 아닌 대응하는 숫자로 변경해 값을 더해주는 방식

class Solution {
    public int solution(int n) {
        String nStr = n + "";
        int answer = 0;
        for (int i = 0; i < nStr.length(); i++) {
            char c = nStr.charAt(i);
            // 아스키코드가 아닌 숫자로 변환
            answer += Character.getNumericValue(c);
        }
        return answer;
    }
}

📍 V2

char 버전 stream 인 chars() 를 사용해 문제를 해결

class Solution {
    public int solution(int n) {
        return (n + "").chars()
                .map(e -> Character.getNumericValue(e))
                .sum();
    }
}

📍 V3

람다를 사용해 더욱 간결하게 문제 해결

class Solution {
    public int solution(int n) {
        return (n + "").chars()
                .map(Character::getNumericValue)
                .sum();
    }
}
profile
잘못된 내용 PR 환영

0개의 댓글