문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- my_string에는 숫자가 한 개 이상 포함되어 있습니다.
- my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -
입출력 예
my_stringresult
"hi12392" | [1, 2, 2, 3, 9] |
"p2o4i8gj2" | [2, 2, 4, 8] |
"abcde0" | [0] |
입출력 예 설명
입출력 예 #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 합니다.
1. 내가 푼 문제
import java.util.Arrays;
class Solution {
public int[] solution(String my_string) {
int count = 0;
StringBuilder sb = new StringBuilder();
// 문자열에서 숫자만 빼기
for(int i=0;i<my_string.length();i++){
if(0 <= my_string.charAt(i)-'0' && my_string.charAt(i)-'0' <= 9 ) {
count++;
sb.append(my_string.charAt(i)-48);
}
}
// 숫자를 넣을 answer 배열
int[] answer = new int[count];
for(int i=0;i<count;i++){
answer[i] = Integer.parseInt(sb.substring(i, i+1));
}
// 오름차순 정렬
Arrays.sort(answer);
return answer;
}
}
2. replaceAll( )사용
import java.util.*;
class Solution {
public int[] solution(String my_string) {
my_string = my_string.replaceAll("[a-z]", ""); //12392
int[] answer = new int[my_string.length()];
for(int i=0;i<answer.length;i++) {
answer[i] = my_string.charAt(i)-'0';
}
Arrays.sort(answer);
return answer;
}
}
- arraylist나 list를 안쓰려고 stringbuilder를 사용해서 했는데 다른 사람이 푼 코드보다 좀 더 길어졌다.. 알고보니 replaceAll()을 사용했다...! replaceAll메서드 사용하기..!
String replace(찾을 문자열, 바꿀 문자열);
String replaceAll(정규식 또는 기존문자, 대체문자)
String str = "커피의 가격은 10,000원 입니다.";
str.replaceAll("[0-9]", "A"); // 커피의 가격은 AA,AAA원 입니다.
replace는 문자로 인식하고, replaceAll은 정규식으로 인식한다.
'algorithm > Programmers' 카테고리의 다른 글
[JAVA] 숨어있는 숫자의 덧셈 (0) | 2023.01.24 |
---|---|
[JAVA] 소인수분해(feat. Integer[ ] -> int[ ] / int[ ] -> Integer[ ]) (0) | 2023.01.24 |
[JAVA] 팩토리얼 (0) | 2023.01.23 |
[JAVA] 합성수 찾기 (0) | 2023.01.23 |
[JAVA] 2차원으로 만들기 (0) | 2023.01.20 |