문제 설명
문자열 my_string 이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
제한사항
- 1 <= my_string 의 길이 <= 100
- my_string 에는 숫자가 한 개 이상 포함되어 있습니다.
- my_string 은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.
입출력 예
my_string | result |
"hi12392" | [1, 2, 2, 3, 9] |
"p2o4i8gj2" | [2, 2, 4, 8] |
"abcde0" | [0] |
import java.util.*;
class Solution {
public int[] solution(String my_string) {
// .length 배열의 길이 반환
// .length() 문자열의 길이 반환
int[] answer = new int[my_string.length()];
int count = -1;
for(int i = 0; i < my_string.length(); i++){
if((my_string.charAt(i) >= '0') && (my_string.charAt(i) <= '9'))
answer[++count] = my_string.charAt(i) - 48;
// int형 변환 시 아스키 코드 값으로 대입되기 때문에 0의 아스키 코드 값인 48을 빼준다.
}
// 삽입 정렬
for(int i = 0; i < count; i++){
for(int j = i + 1; j > 0; j--){
if(answer[j - 1] > answer[j]){
int swap = answer[j - 1];
answer[j - 1] = answer[j];
answer[j] = swap;
}
}
}
// 0 ~ count 길이까지 배열 복사
answer = Arrays.copyOfRange(answer, 0, count + 1);
return answer;
}
}
import java.util.*;
class Solution {
public int[] solution(String my_string) {
// str.replace("a", "x"); str의 모든 a가 x로 change
// str.replaceAll("[a-z]", "x"); str의 모든 a~z의 값이 x로 change (replace와 다르게 특정 규칙을 가진 문자열의 집합인 [정규표현식] 사용 가능)
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;
}
}
'Java' 카테고리의 다른 글
컬렉션 (0) | 2023.10.20 |
---|---|
연산자, for 문, 배열과 String 메소드 (0) | 2023.10.19 |
래퍼 클래스, 참조형 변수, 형 변환 (0) | 2023.10.17 |
JVM, Java 실행 과정, 변수 (1) | 2023.10.13 |
문자열 비교 (0) | 2023.10.02 |