문자열 정렬하기 (1)
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
1 ≤ my_string의 길이 ≤ 100
my_string에는 숫자가 한 개 이상 포함되어 있습니다.
my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.
💻 풀이
charAt()을 이용해 문자열을 하나씩 분리해준다.char을 int로 만들기 위해 Integer.parseInt(String.valueOf(ch)) 을 사용해주고Arrays.copyOf()로 새로운 배열을 만들어 준 후 Arrays.sort() 를 사용해 배열을 오름차순으로 정렬한 후 return 해준다.⌛ 시간 0.61ms ~ 1.67ms
public int[] solution(String my_string) {
int[] arr = new int[my_string.length()];
int j = 0;
for(int i = 0; i < my_string.length(); i++) {
char ch = my_string.charAt(i);
if(Character.isDigit(ch)) {
System.out.println(j);
arr[j] = Integer.parseInt(String.valueOf(ch));
j++;
}
}
arr = Arrays.copyOf(arr, j);
Arrays.sort(arr);
return arr;
}
💻 풀이
List<> 를 선언한 후 add로 숫자를 넣어준다.int[]로 return 하기 위해sorted() 로 정렬 후 mapToInt(i -> i) 로 언박싱 해준 후 toArray()로 배열로 return 해준다.📌 (i -> i) 는 숫자 그대로를 바꿀 때 사용하며 주로 Integer 를 int로 언박싱할 때 사용한다.
📌 (Integer::parseInt) 는 String 을 숫자로 바꿀 때 사용한다.
⌛ 시간 2.45ms ~ 5.81ms
public int[] solution1(String my_string) {
List<Integer> list = new ArrayList<>();
for(int i = 0; i < my_string.length(); i++) {
if(Character.isDigit(my_string.charAt(i))) {
list.add(Integer.parseInt(String.valueOf(my_string.charAt(i))));
}
}
return list.stream().sorted().mapToInt(i -> i).toArray();
}