알고리즘/프로그래머스:LV00

[LV00] 자릿수 더하기

공또뤼 2023. 11. 24. 17:38
반응형

 (JAVA)

프로그래머스 문제 보러 가기 👉🏻

0. 문제 및 입출력 예제

문제

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

 

제한사항

0 ≤ n ≤ 1,000,000

 

입출력 예

입출력 예 #1
1 + 2 + 3 + 4 = 10을 return합니다.

입출력 예 #2
9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.

1. 문제 분석

- int 를 문자열로 만든다.

- 문자열을 반복하면서 index 0부터 answer에 값을 더해준다.

 

2. 방법

✅ 내가 푼 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        String intStr = Integer.toString(n);
        
        for (int i = 0; i < intStr.length(); i++) {
            answer += Character.getNumericValue(intStr.charAt(i));
        }
        
        return answer;
    }
}

 

✅ 다른 사람 풀이 1

n이 0일 때까지 반복을 돌면서 자릿수가 핵심인만큼 10으로 나눠가며 나머지를 넣어준다.

class Solution {
    public int solution(int n) {
        int answer = 0;

        while(n>0){
            answer+=n%10;
            n/=10;
        }

        return answer;
    }
}

 

✅ 다른 사람 풀이 2

막간을 이용해서 Stream을 공부해보면, 

스트림은 자바 8에서 도입된 새로운 데이터 처리 개념이며 컬렉션, 배열 등의 데이터를 다루는데 유용하다.

스트림을 사용하면 간결하고 효율적인 데이터 처리가 가능하다.

 

import java.util.Arrays;

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

 

Arrays.stream(split) 을 사용해 ["1", "2", "3", "4"] 배열을 생성한 후 

mapToInt(Integer::parseInt) 를 사용해 [1, 2, 3, 4] 로 문자열을 정수로 변환해준다.

마지막으로 sum()을 호출하면 자동으로 합산된다.

 

3. 느낀점

마찬가지로 다른 사람들의 풀이를 보았더니.. 대박... 알고리즘 잘하고싶다..

반응형