본문 바로가기
Study with me/프로그래머스 L0 마스터하기

프로그래머스 - L0 문자열정수의합 // String.chars()

by 외계나무 2023. 12. 7.

프로그래머스 - level 0 문자열 정수의 합

▼ Stream과 IntStream 써보려고 헤메다 포기함

class Solution {
    public int solution(String num_str) {
        int answer = 0;
        for(int i=0; i<num_str.length(); i++) {
            answer += (int)(num_str.charAt(i))-48;
        }
        return answer;
    }
}

(참고: 0의 아스키코드 값은 48이다.)

 

  그래서 가져온 스트림 사용한 풀이

import java.util.stream.Stream;

class Solution {
    public int solution(String num_str) {
        return Stream.of(num_str.split("")).mapToInt(Integer::parseInt).sum();
    }
}

java에서 String 객체는 sequence나 iterable 취급하지 않으므로 split으로 각 요소를 나눠주고, mapToInt를... 크흡...

 

  하지만 이렇게 풀 수도 있었겠지... chars() 의 존재를 매번 잊어...

class Solution {
    public int solution(String numStr) {
        return numStr.chars().map(c -> c - 48).sum();
    }
}

String.chars()

: 문자열을 IntStream으로 변환하여 문자열의 각 문자에 해당하는 코드 포인트(Unicode 코드)를 나타내는 정수 스트림을 생성하는 메서드