프로그래머스 코딩(자바)/Level 0
Programmers Level 0 - 자릿수 더하기
kjwc
2023. 2. 28. 16:01
728x90
문제 설명
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
제한사항
- 0 ≤ n ≤ 1,000,000
입출력 예
n | result |
1234 | 10 |
930211 | 16 |
입출력 예 설명
입출력 예 #1
- 1 + 2 + 3 + 4 = 10을 return합니다.
입출력 예 #2
- 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.
[ 풀이 1 ]
1
2
3
4
5
6
7
8
9
10
|
class Solution {
public int solution(int n) {
int answer = 0;
while(n>0) {
answer += n%10;
n/=10;
}
return answer;
}
}
|
n %10 할때마다 맨뒤의 1자리가 구해진다. 이 값을 누적한다. n /= 10 하면 맨 뒷자리가 사라진다.(정수 나누기 정수의 결과는 정수이기 때문이다.) n의 값이 0보다 클때까지 반복하면 된다. |
[ 풀이 2 ]
1
2
3
4
5
|
class Solution {
public int solution(int n) {
return Arrays.stream((n+"").split("")).mapToInt(Integer::parseInt).sum();
}
}
|
n+"" : String으로 변환 (n+"").split("") : String을 1글자씩 분리하여 String 배열로 만든다. Arrays.stream((n+"").split("")) : Stream<String>으로 변환 Arrays.stream((n+"").split("")).mapToInt(Integer::parseInt) : 각각의 요소를 Integer.parseInt()메서드 를 이용하여 Integer타입의 IntStream으로 변환 Arrays.stream((n+"").split("")).mapToInt(Integer::parseInt).sum(); : sum() 메서드로 합계를 구한다. |
위의 코드를 풀어쓰면 다음과 같다.
1
2
3
4
5
6
7
8
9
10
|
class Solution {
public int solution(int n) {
String t = n + "";
String[] strArray = t.split("");
Stream<String> stream = Arrays.stream(strArray);
IntStream intStream = stream.mapToInt(Integer::parseInt);
int result = intStream.sum();
return result;
}
}
|

728x90