문제 설명
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- my_string에는 숫자가 한 개 이상 포함되어 있습니다.
- my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -
입출력 예
입출력 설명
입출력 예 #1
- "hi12392"에 있는 숫자 1, 2, 3, 9, 2를 오름차순 정렬한 [1, 2, 2, 3, 9]를 return 합니다.
입출력 예 #2
- "p2o4i8gj2"에 있는 숫자 2, 4, 8, 2를 오름차순 정렬한 [2, 2, 4, 8]을 return 합니다.
입출력 예 #3
- "abcde0"에 있는 숫자 0을 오름차순 정렬한 [0]을 return 합니다.
코드
import java.util.*;
class Solution {
public int[] solution(String my_string) {
int[] answer = {};
List<Integer> list = new ArrayList<Integer>();
char check;
for(int i=0; i<my_string.length(); i++) {
check = my_string.charAt(i);
if(Character.isDigit(check)) {
list.add(check - '0');
}
}
answer = new int[list.size()];
for(int i=0; i<list.size(); i++) {
answer[i] = list.get(i);
}
Arrays.sort(answer);
return answer;
}
}
풀이
반복문으로 check 변수를 통해 my_string의 문자들이 숫자인지 문자인지 확인 후 숫자라면 숫자로 변환하여 가변적인 ArrayList에 추가를 해준다. 그 후, list의 크기만큼 answer 배열을 할당해주어 반복문을 이용해 list에 있는 값들을 answer배열로 옮겨 반복문이 끝나면 answer배열을 정렬해준다.
다른 코드와 풀이
아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.
import java.util.*;
class Solution {
public int[] solution(String myString) {
return Arrays.stream(myString.replaceAll("[A-Z|a-z]", "").split("")).sorted().mapToInt(Integer::parseInt).toArray();
}
}
정규표현식을 통해 숫자가 아닌 A-Z, a-z는 모두 빈문자열로 바꿔준 후 이를 정렬해준다. 그 후 myString을 integer로 변환하고 Stream을 배열로 바꿔준다.
import java.util.*;
class Solution {
public int[] solution(String my_string) {
my_string = my_string.replaceAll("[a-z]","");
int[] answer = new int[my_string.length()];
for(int i =0; i<my_string.length(); i++){
answer[i] = my_string.charAt(i) - '0';
}
Arrays.sort(answer);
return answer;
}
}
my_string의 a-z를 빈문자열로 대체한 후 for문을 이용해 my_string을 숫자로 변환하여 answer 배열에 넣어준 후, 배열이 끝나면 정렬해준다.
정리
정규표현식
: 문자열 데이터 중 원하는 조건과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것.
(참고; https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A0%95%EA%B7%9C%EC%8B%9DRegular-Expression-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC)
'Coding Test' 카테고리의 다른 글
230927 대문자와 소문자 - Level 0 (0) | 2023.09.27 |
---|---|
230926 중복된 문자 제거 - Level 0 (0) | 2023.09.26 |
230925 삼각형의 완성조건 (1) - Level 0 (0) | 2023.09.25 |
230925 머쓱이보다 키 큰 사람 - Level 0 (0) | 2023.09.25 |
230924 자릿수 더하기 - Level 0 (0) | 2023.09.24 |