주어진 문자열 중 숫자만 뽑아 오름차순 정렬한 숫자 리스트를 반환
public int[] solution(String my_string) {
my_string = my_string.replaceAll("\\D", "");
char[] arr = my_string.toCharArray();
Arrays.sort(arr);
int[] answer = new int[arr.length];
for(int i=0; i<arr.length; i++){
answer[i] = Integer.parseInt(arr[i]+"");
}
return answer;
}
문자열 중 숫자가 아닌 모든 문자를 제거한다.
숫자만 남은 문자열을 char[]로 바꾸어 정렬한다.
char[]로 반환해도 될 줄 알았는데 숫자 형식으로 바꾸어야 하는지 오답이 나왔다.
-> char+"" 로 String 형태로 바꾼 후 Integer.parseInt() 메서드로 숫자형태로 바꿔 주었다.
-> char의 '0'~'9'까지 문자에서 '0'의 값을 빼주면 int 0~9값이 나오므로
int[] answer = new int[arr.length];
for(int i=0; i<arr.length; i++){
answer[i] = arr[i]-'0';
}
이렇게 바꿀수도 있다.
return Arrays.stream(myString.replaceAll("[A-Z|a-z]", "")
.split("")).
sorted().
mapToInt(Integer::parseInt).
toArray();
스트림과 정규표현식을 이용한 다른 사람의 풀이이다.
replaceAll 메서드를 이용해 A~Z 또는 a~z 까지의 문자를 모두 "" null String으로 바꾸고
.split("") 메서드로 모든 문자를 분할하고 정렬한후 Integer 배열로 바꾸었다.
자료구조, 알고리즘 정리한 후 스트림과 정규표현식도 정리해봐야겠다.
'Java > Coding Test' 카테고리의 다른 글
피자 나눠먹기(2) 문제풀이 (with.유클리드 호제법) (0) | 2023.09.10 |
---|---|
외계행성의 나이 문제풀이 (0) | 2023.09.10 |
점의 위치 구하기 문제풀이 (1) | 2023.09.09 |
삼각형의 완성조건 (0) | 2023.09.09 |
순서쌍의 개수 문제풀이 (0) | 2023.09.09 |