본문 바로가기

Study/Code Review

[프로그래머스] 자리수 더하기

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

 

코딩테스트 연습 - 자릿수 더하기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출

programmers.co.kr

 

문제 설명

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

 

 

제한 사항

N의 범위 : 100,000,000 이하의 자연수

 


 

01. 나의 풀이 코드

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

    int sum = 0;

    String str = Integer.toString(n);

    int length = str.length();

    String[] arr = new String[length];

    arr = str.split("");

    for(int i = 0; i < arr.length; i++) {
        sum += Integer.parseInt(str.substring(i, i + 1));
        answer = sum;
    }

    return answer;
}

 

-  효율적이지 못한 코드긴 하지만 일단 내가 풀었다는거에 의의를...

 

- charAt() 을 사용해보고 싶었는데 파싱하는 부분을 확인해봐야 할 듯 싶다.

 

 

 

02. 내 머리 속에서 그러졌던 걸 구현한 다른 분의 풀이

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

        String num = String.valueOf(n);

        for(int i = 0 ; i < num.length() ; i ++){
            answer += Integer.parseInt(String.valueOf(num.charAt(i)));
        }

        return answer;
}

 

 


 

[공부한 내용]

(출처 : 자바의 정석)

 

- 객체지향 언어인 자바에서 char배열과 그에 관련된 기능들을 함께 묶어서 클래스에 정의한다.

- String객체(문자열)은 읽을 수만 있고, 변경할 수 없다. 

- 변경하려고 하면 새로운 문자열을 생성한다.

(변경 가능한 문자열은 => StringBuffer 클래스를 이용)

 

charAt(int index) 문자열에서 해당 위치(index)에 있는 한 문자를 반환
배열과 마찬가지로 charAt()의 index 값은 0부터 시작한다.
char[] toCharArray() 문자열을 문자배열로 변환해서 반환