728x90

주어진 문자열 중 숫자만 뽑아 오름차순 정렬한 숫자 리스트를 반환 

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 배열로 바꾸었다.

 

자료구조, 알고리즘 정리한 후 스트림과 정규표현식도 정리해봐야겠다.

 

+ Recent posts