이 문제의 포인트는 int를 int배열로 만드는 방법이다.
1) for문을 이용하는 방식 : 10의 배수를 이용. 자리수를 구한 후 for문을 이용(1자리 수부터 거꾸로 계산)
2) Stream을 이용하는 방식
- split을 이용하기 위해 String으로 변환
- mapToInt를 이용하여 int[]로 변환하기 위해 Stream<String>으로 변환
import java.util.*;
import java.util.stream.Stream;
public class Solution {
public int solution(int n) {
int answer = 0;
//Arrays.asList()는 primitive타입을 Wrapper클래스로(int를 Integer) X, 사용할 수 없음.
//int를 string으로 변환 후 split으로 잘라서 string[]을 만듦
String[] arr = String.valueOf(n).split("");
//stream을 이용하기 위해 변환
////Collection타입(collection, list, set)은 list.stream()으로 변환 가능
Stream<String> arr2 = Arrays.stream(arr);
//mapToInt를 이용하여 int형의 배열로 변환
int[] num = arr2.mapToInt(Integer::parseInt).toArray();
//이 모든 변환과정을 한 줄로 표현하면
//int[] num = Stream.of(String.valueOf(n).split("")).mapToInt(Integer::parseInt).toArray();
for (int i = 0; i < num.length; i++) {
answer += num[i];
}
return answer;
}
}
Stream의 특성상 int배열로 변환하는 코드를 한줄로도 쓸 수 있는데, 그 경우 실행시 속도가 비교적 느려지는 것 같다.
+ Stream 별도정리 : https://paran21.tistory.com/48
'Language > JAVA' 카테고리의 다른 글
#List와 배열 : 자료형 변환(캐스팅) + 컬렉션 순회하면서 특정 원소 삭제 (0) | 2022.01.18 |
---|---|
[프로그래머스] 자연수 뒤집어 배열로 만들기 (0) | 2022.01.18 |
[프로그래머스] 이상한 문자 만들기 (0) | 2022.01.17 |
[프로그래머스] 완주하지 못한 선수 (0) | 2022.01.17 |
[프로그래머스] 수박수박수박수박수박수? (0) | 2022.01.17 |