import java.util.*;
class Solution {
public int[] solution(long n) {
String longToStr = Long.toString(n);
int[] answer = new int[longToStr.length()];
for(int i = 0; i < longToStr.length(); i++){
answer[i] = Character.getNumericValue(longToStr.charAt(longToStr.length() - i -1));
}
return answer;
}
}
java에서 형변환하는 건 아직도 익숙하지 않음.
for loop을 돌 때 index을 잘못 설정했는데 곧바로 StringIndexOutOfBoundsException을 뱉었다. js는 인덱스 넘어가도 undefined 뱉어서 휘뚜루마뚜루 넘어갔던 거 같은데 java는 굉장히 까다롭다.
java는 String 클래스를 사용하기 때문에 클래스에서 제공하는 length()로 문자열 길이를 가져온다.
String longToStr = Long.toString(n);
int[] answer = new int[longToStr.length()];
charAt은 문자열에서 특정 인덱스에 위치한 문자를 반환하는데 사용한다. 자꾸만 습관적으로 string[i]로 접근하려고 하는데, String 클래스이기 때문에 인덱스로 접근이 불가하다.
Character.getNumericValue는 char 타입의 데이터를 int 타입으로 변경해준다.
다른 사람들 풀이를 보니 String[] 으로 변환해서 index로 접근, 그리고 Integer.parseInt()를 사용하여 int로 변경 후 int[]에 담았다.
StringBuilder도 많이 사용하였는데, StringBuilder는 문자열을 다루는 클래스라고 한다. 간단하게 .reverse()해도 될듯
HashSet같은 컬렉션을 사용할 때, HashSet<int>
가 아니라 HashSet<Integer>
를 사용하는데(이 부분이 굉장히 헷갈렸다) Integer는 int의 래퍼 클래스로 참조 데이터 타입이라고 한다. 그래서 참조형 List, Set 등 객체만 저장할 수 있는 컬렉션에서는 Integer를 사용!