자바를 이용한 알고리즘 문제 풀다가
자주 나오는 케이스인데
int 타입의 값을 받아서
배열 안에 넣고 적절한 로직을 수행한 뒤
반환하는 형식의 문제인데
int 형식의 값을 받아서 배열 안에 넣어주려면
for 문을 돌리면서
한 글자씩 뽑아서 넣어줘야 한다
여기서 문제는 String을 이용한 글자 뽑기 방법이
CharAt / substring 밖에 없는데
substring의 경우에는 end index를 설정해야 해서
end index가 문자열 크기를 넘기게 설정하면 에러가 난다
즉 손이 많이 가서 쓰기 귀찮다는 말이다
반면 CharAt의 경우에는 한글자씩 뽑아올 수 있는건 좋은데
문제는 뽑은 값을 Character 타입으로 반환하기 때문에
이걸 또 String 타입으로 변환해서 사용해야 하는데
편하게 String 타입으로 전환한 뒤
한글자씩 배열에 넣어주려면
아래 방법을 따라해주면 된다
1. for문 돌리기
귀찮은 방법이지만 확실한 방법이기 때문에
for 문 돌리면서 한글자씩 CharAt으로 뽑아온 뒤
String.valueOf(CharAt한거) 로 한땀한땀 넣어주면 된다
2. split을 이용해 list에 바로 넣어버리기
String.split("")을 사용해주면 한글자씩 모두 분해할 수 있는데
위 값은 숫자이기 때문에
String.valueOf(값).split("")을 사용해주면
List 타입으로 한글자씩 분해가 된다
이걸 List에 넣어주면 되는데
ArrayList / LinkedList 등에는 들어가지 않기 때문에
List 선언 시에 주의가 필요하다
3. addAll을 이용해 list에 넣기
2번 방법은 List 타입에만 넣을 수 있는데
3번 방법은 list 타입으로 쪼개진 값을
addAll을 사용하면 파라미터를
Collection 타입(List가 상속하는 객체)으로 받아주기 때문에
List / ArrayList / LinkedList 등 아무 타입으로 넣어줘도
쉽게 add가 가능해진다
4. List 선언 시 생성자 파라미터로 넣어주기
List 선언 시 () 안에 list를 넣어주면
생성자에서 파라미터를 Collection 타입으로 받기 때문에
생성과 동시에 값을 넣어줄 수 있다
이게 위 3방법보다 가장 편하기 떄문에
앞에서 미리 List를 선언한 후에
뭔가 사용할 일이 있는게 아니라면
그냥 선언과 동시에
생성자에서 삽입시키게 하는 방법이 가장 좋다
마지막으로 예제에 사용한 코드는 다음과 같다
public static void main(String[] args) {
int number = 124223; // int 타입의 값
List<String> list = new ArrayList<String>(); // String 타입 List
ArrayList<String> aList = new ArrayList<String>(); // String 타입 List
// 1. for문 돌리기
for(int i = 0; i<String.valueOf(number).length(); i++) {
// int 타입의 number를 String으로 만든 후
// charAt으로 Char타입으로 1글자 꺼내온 뒤 String으로 다시 변환
list.add(String.valueOf(String.valueOf(number).charAt(i)));
}
// 2. split을 이용해 list에 바로 넣어버리기 (List로 선언 필요(array, linkedlist X))
list = Arrays.asList(String.valueOf(number).split(""));
// 3. addAll을 이용해 list에 넣기
aList.addAll(Arrays.asList(String.valueOf(number).split("")));
// 4. List 선언 시 생성자 파라미터로 넣어주기
ArrayList<String> list2 = new ArrayList<String>(Arrays.asList(String.valueOf(number).split("")));
}
'Language > Java' 카테고리의 다른 글
자바 배열을 ArrayList LinkedList로 받는 방법 (0) | 2021.10.25 |
---|---|
자바 addAll 으로 list에 배열, 다른 list, set을 넣는 방법 (0) | 2021.10.06 |
자바 배열 자료형 선언 시 다른 자료형에서 즉시 변환 방법 (0) | 2021.10.05 |
자바 Calendar를 이용해 쿼리 between 처럼 사용방법 (0) | 2021.07.05 |
자바 String 줄 바꾸는(개행) 방법 (0) | 2021.05.28 |
댓글