대범하게

[Programmers] Level1 자릿수 더하기 본문

Problem Solving/Algorithm Concepts

[Programmers] Level1 자릿수 더하기

대범하게 2022. 8. 2. 13:24
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12931

* 문제 설명

프로그래머스 Level1 자릿수 더하기

 

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return하는 solution 함수를 만들라
예를 들어 N = 123이면 1+2+3=6 을 return 하면 된다.
 

* 입출력 예

N answer
123 6
987 24

 

* 소스코드1

1. 숫자를 쪼개기 힘들기 때문에 문자열로 변환

숫자를 문자로 변환은 생각보다 간단하다........!

new String으로 선언한 후, 파라미터로 입력받은 n과 텅 빈 값("")을 붙이면(+) 된다.

(long n = 12345 이었으면,  String str = 12345; 문자열이 된다.)

 

2. 문자열을 쪼개서 배열로 저장

strArr라는 배열을 선언한 후, str 문자열을 split()을 이용해 쪼개어 배열에 넣는다.

split() 메소드는 String에서만 사용되고, 마침표나 슬래쉬 등 기호를 기준으로 값을 쪼갤 수 다.

이 문제에서는 모든 글자를 쪼개기 때문에 split("")을 사용한다.

 

3. 문자열 배열을 숫자로 바꿔준다.

 

리턴할 배열 answer의 데이터 타입이 int인데 arr는 String 배열이기에 Integer.parseInt()을 통해 형변환해준다.

혹은 Integer.valueOf을 통해 형변환을 해준다.

 

4. 각 자릿수를 합하기 때문에 for문에서 +=를 사용해 누적해서 더해준다.

public class Solution {
    public int solution(int n) {
        int answer = 0;
        String str = n +""; // 숫자 n을 문자열 str로 바꾸기
        String[] arr = str.split(""); // 문자열 내 글자 모두 나누기

        for(int i = 0; i<arr.length; i++){
            answer += Integer.valueOf(arr[i]); // 문자열 배열을 숫자로 바꾸기
        }
        return answer;
    }
// 하나도 안 찾아보고 내 힘으로 해결한 코드 ㅠ 조금씩 발전 중..!
}

// 123
//6
//987
//24

 

Comments