정수 n
이 매개변수로 주어질 때 n
의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
n
≤ 1,000,000 @Test
@DisplayName("1234 => 10")
void name() {
assertThat(new Solution().solution(1234)).isEqualTo(10);
}
@Test
@DisplayName("930211 => 16")
void name1() {
assertThat(new Solution().solution(930211)).isEqualTo(16);
}
@Test
@DisplayName("123 => 6")
void name2() {
assertThat(new Solution().solution(123)).isEqualTo(6);
}
매개 변수를 String 으로 변환하고, 다시 char 로 변환해 아스키 코드가 아닌 대응하는 숫자로 변경해 값을 더해주는 방식
class Solution {
public int solution(int n) {
String nStr = n + "";
int answer = 0;
for (int i = 0; i < nStr.length(); i++) {
char c = nStr.charAt(i);
// 아스키코드가 아닌 숫자로 변환
answer += Character.getNumericValue(c);
}
return answer;
}
}
char 버전 stream 인 chars() 를 사용해 문제를 해결
class Solution {
public int solution(int n) {
return (n + "").chars()
.map(e -> Character.getNumericValue(e))
.sum();
}
}
람다를 사용해 더욱 간결하게 문제 해결
class Solution {
public int solution(int n) {
return (n + "").chars()
.map(Character::getNumericValue)
.sum();
}
}