본문 바로가기
Algorithm

[Java&알고리즘] 자릿수 더하기 (Level 1)

by GoodDayDeveloper 2023. 2. 17.
반응형

 

프로그래머스의 알고리즘 문제 및 풀이에 대해 차근차근 포스팅하려합니다.

 

저도 초보자이기도하고 알고리즘에 쉽게 다가갈 수 없는 부분들이 많기 때문에

최대한 알기 쉽게 정리해보려하고 알고리즘을 어려워하는 분들에게 도움이 되었으면 합니다.

 

많이 공유되고 토론이 될 수 있는 공간이 되었으면 좋겠습니다.

 

 

 

 

 

 

 

환경

언어 : 자바

단계 : 레벨 1단계 (입문자용)

정답률 : 86%

 

 

 

 

 

제목 

 

자릿수 더하기

 
 
 

 

 

문제 설명 및 코드

 

 

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

 

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

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.*;
 
public class Solution {
    public int solution(int n) {
        int answer = 0;
 
        return answer;
    }
}
cs

 

 

 

 

 

입출력 예

 

n return
123 6
987 24

입출력 예 설명

 

입출력 예 #1
문제의 예시와 같습니다.

 

입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제 정답 코드

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*;
 
public class Solution {
    public int solution(int n) {
        int answer = 0;
        
        String nStr = Integer.toString(n);
        
        for(int i=0; i<nStr.length(); i++){
            answer += nStr.charAt(i) - '0';
        }
 
        return answer;
    }
}
cs

 

 

 

우선 임의의 수인 n를 문자열로 변환해줍니다.

그리고 문자열 길이만큼 반복하면서

문자열을 charAt로 받아 answer에 차곡차곡 넣어주면 됩니다.

 

여기서 charAt는 String타입으로 받은 문자열을 char타입으로 한 글자씩 받는 함수입니다.

예를 들어 n의 값이 '123' 이라고 했을 경우

charAt(0)을 했을때의 값은 1이 됩니다.

 

하지만 우리는 이것을 차례차례 더한 값을 원하기 때문에

숫자인 int형으로 변환을 해줘야하는 겁니다.

즉, nStr.charAt(0)은 문자열 '1'이 출력되고 이걸 int형으로 변환시키면 아스키코드값인 49가 나오게 됩니다.

 

하지만 우리는 1이 필요하기 때문에 48을 빼줘야하는데

'0'은 아스키코드 48입니다.

그래서 - '0'을 사용하여 반복하면 차례차례 더한 값이 변수에 저장이 되는 겁니다.

 

 

 

 

 

 

 

 

 

다른사람 풀이

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;
 
public class Solution {
    public int solution(int n) {
        int answer = 0;
 
        while(true){
            answer+=n%10;
            if(n<10)
                break;
            n=n/10;
        }
 
        return answer;
    }
}
cs

 

 

n의 산술연산식을 통해서 나머지 값을 변수에 넣는 방식을 하였습니다.

생각보다 간단한 코드이네요. 여럽게 생각하면 안된다는 생각이 들었습니다...

 

 

 

 

반응형

댓글