https://programmers.co.kr/learn/courses/30/lessons/12932
int를 int배열로 만드는 방법은 https://paran21.tistory.com/36을 참고했다!(바로 연달아 풀어서 바로 적용할 수 있었다.)
이전에 문제를 풀면서, for문 사용할 때 조건에 따라 count와 같이 별도로 인덱스를 설정하는 것을 참고했는데, 응용해서 풀었다.
import java.util.stream.Stream;
class Solution {
public int[] solution(long n) {
//split을 사용하기 위해 string[]으로 변환
String[] arr = String.valueOf(n).split("");
//Stream을 이용하여 int[]로 변환
int[] array = Stream.of(arr).mapToInt(Integer::parseInt).toArray();
//answer 초기화 : 길이는 array.length
int[] answer = new int[array.length];
//배열을 뒤집어 배열하기 위해 answer의 인덱스로 쓸 count 선언
int count = array.length-1;
for (int i =0; i < array.length; i++) {
answer[count] = array[i];
//count를 하나씩 빼서 거꾸로 맨 뒤부터 배열되도록 함.
count--;
}
return answer;
}
}
++코드 추가 : StriingBuilder의 reverse기능을 사용하였다.
import java.util.stream.Stream;
class Solution {
public int[] solution(long n) {
//StringBuilder의 reverse를 사용하기 위해 변환
StringBuilder num = new StringBuilder(String.valueOf(n));
//뒤집고 배열로 변환
String[] numAr = num.reverse().toString().split("");
//int[]로 변환
int[] answer = Stream.of(numAr).mapToInt(Integer::parseInt).toArray();
return answer;
}
}
Stream을 사용해서 처리 시간이 오래걸릴거라고 예상했다.(테스트당 2~3초대)
다른 사람의 풀이 중에 Stringbuilder, Steam을 사용하지 않고 while문을 사용해서 배열을 만드는 답안을 넣어봤는데,
예상외로 while이 훨씬 더 오래걸렸다(6~8정도).
루프를 반복해서 도는게 생각보다 처리 시간이 오래걸리는 것 같다.
'Language > JAVA' 카테고리의 다른 글
#배열과 int/String : 자료형 변환 (0) | 2022.01.18 |
---|---|
#List와 배열 : 자료형 변환(캐스팅) + 컬렉션 순회하면서 특정 원소 삭제 (0) | 2022.01.18 |
[프로그래머스] 자릿수 더하기 + Stream참고자료 (0) | 2022.01.18 |
[프로그래머스] 이상한 문자 만들기 (0) | 2022.01.17 |
[프로그래머스] 완주하지 못한 선수 (0) | 2022.01.17 |