[프로그래머스] 자릿수 더하기(자바)

지수·2021년 7월 26일
0
post-thumbnail

👩‍🏫 문제

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

문제 설명

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

제한사항

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

입출력 예

Nanswer
1236
98724

👩‍💻 풀이

1) charAt 활용 풀이

import java.util.*;

public class Solution {
    public int solution(int n) {
        String number = Integer.toString(n);
        int answer = 0;

        for(int i = 0; i < number.length(); i++) {
            answer += number.charAt(i) - '0';
        }
        return answer;
    }
}

2) 형 변환이 많~~~은 풀이
형 변환이 잦아서 효율이 떨어지는 코드지만, 형 변환 문법을 익힐 수 있었다!ㅋㅋ

public int solution(int n) {
        char[] num = Integer.toString(n).toCharArray();
        int answer = 0;
        for(char c : num) {
            answer += Integer.parseInt(Character.toString(c));
        }
        return answer;
    }

3) 정석, 나눗셈을 활용한 풀이

import java.util.*;

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

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

        return answer;
    }
}

아직 자바로 코드를 간신히 구현하기만 할 뿐, 어떤 것이 좋은 코드인지 잘 모르는 상태라서 3가지 풀이 중 어떤 것이 베스트인지 모르겠다..ㅠ
백준에서는 메모리 사용량, 속도를 한번에 확인할 수 있어서 여러 풀이를 비교하기 좋은데, 프로그래머스에서는 그런 기능을 못 찾았다.(없는건가?)

한 자리씩 떼서 본다는 생각에 charAt 메소드가 떠올라 사용했는데, 다른 분들의 풀이에 달린 댓글들을 보니 형변환을 하고 인덱싱을 하는 형식의 코드가 가독성은 좋아도, 메모리를 잡아먹는 안좋은 코드라고 표현되어있었다. 가장 좋은 코드는 정석대로 나눗셈을 한 3번 코드인걸까?

좋은 코드란 몰까...?

profile
사부작 사부작

0개의 댓글