<문제 제시>
<문제설명>
문자열 my_string이 매개변수로 주어질 때,
my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를
return 하도록 solution 함수를 작성해보세요.
<예시 입출력>
<문제 해결 과정>
문자열 안에서 숫자(정수형)를 찾아 리스트화 시키고 오름차순 정렬까지 하는 문제이다.
처음에는 문자열을 charAt()으로 하나하나 쪼개어 0~9범위에 해당하는지를 검사하고자 하였음
Try 1)
List<Integer> temp = new ArrayList<>();
int string_num = 0;
int test_num = 0;
for(int i = 0; i < my_string.length(); i++){
if(0 < my_string.charAt(i) && my_string.charAt(i) <= 9) {
string_num = my_string.charAt(i);
System.out.println("string_num = " + string_num
+ "charAt = " + my_string.charAt(i));
temp.add(i, string_num);
}
}
int[] answer = new int[temp.size()];
for(int i = 0; i < temp.size(); i++) {
answer[i] = temp.get(i);
}
return answer;
if 조건에 도달하지 못함 = my_string.charAt(i) 부분을 정수라고 인식하지 못하는 것
>> 문자형이므로 Integer.parseInt()로 한번 더 정수형 변환해주어야할 것 같았음
Solution 1)
1) 정규표현식 사용 = .replaceAll 메서드 사용
2) [^0-9] = 0~9가 아닌, 값들을 변환
String num_str = my_string.replaceAll("[^0-9]", "");
<전체코드>
import java.util.Arrays;
public class sort_string {
public static int[] solution(String my_string) {
// 0~9가 아닌(^) 값 들은 "" <- 제거함
String num_str = my_string.replaceAll("[^0-9]", "");
int num_int = Integer.parseInt(num_str);
int[] answer = new int[num_str.length()];
int i = 0;
// 정수 추출된 것을 분리
while(true) {
if(num_int <= 0) break;
else {
answer[i] = num_int % 10;
i++;
num_int = num_int / 10;
}
}
Arrays.sort(answer);
return answer;
}
public static void main(String[] args) {
String my_string = "hi12392";
//String my_string = "p2o4i8gj2";
System.out.println(Arrays.toString(solution(my_string)));
}
}
정규표현식인 [^0-9]을 통해서 replaceAll의 매개인자로 처리해주었다.
0~9에 해당하지 않는(^) 수는 공백("")으로 처리해주어 num_str 변수에 넣는다.
숫자만 남은 num_str변수를 num_int 정수형 변수에 넣어
num_int % 10을 하면 1의자리 숫자들만 뽑아낼 수 있으므로 배열에 넣고,
num_int는 num_int / 10으로 계속해서 업데이트 해준다. (0이 될때까지)
Arrays클래스의 sort 메서드를 이용해 오름차순 정렬(기본값)을 해주고 리턴해준다.
문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120850
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] '소인수분해' - Java (0) | 2023.05.10 |
---|---|
[프로그래머스] '숨어있는 숫자의 덧셈 (1)' - Java (0) | 2023.05.10 |
[프로그래머스] 'k의 개수' - Java (1) | 2023.05.09 |
[프로그래머스] '최댓값 만들기 (1)' - Java (0) | 2023.05.03 |
[프로그래머스] '모음 제거' - Java (0) | 2023.05.03 |