on
자바 String.charAt 을 String으로 받는 방법
자바 String.charAt 을 String으로 받는 방법
반응형
자바를 이용한 알고리즘 문제 풀다가
자주 나오는 케이스인데
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 list = new ArrayList(); // String 타입 List ArrayList aList = new ArrayList(); // String 타입 List // 1. for문 돌리기 for(int i = 0; i list2 = new ArrayList(Arrays.asList(String.valueOf(number).split(""))); }
반응형
from http://wakestand.tistory.com/611 by ccl(A) rewrite - 2021-10-05 15:27:45