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
'프로그래머스 코딩(자바) > Level 0' 카테고리의 다른 글
Programmers Level 0 - 문자열 안에 문자열 (0) | 2023.02.28 |
---|---|
Programmers Level 0 - 숨어있는 숫자의 덧셈 (1) (0) | 2023.02.28 |
Programmers Level 0 - 중앙값 구하기 (0) | 2023.02.28 |
Programmers Level 0 - 편지 (0) | 2023.02.28 |
Programmers Level 0 - 순서쌍의 개수 (0) | 2023.02.28 |