[프로그래머스] Lv.0 문자열 정렬하기(1)

이다혜·2023년 11월 9일
0

프로그래머스

목록 보기
56/61
post-thumbnail

📎 문제 출처


https://school.programmers.co.kr/learn/courses/30/lessons/120850

📌 문제 설명


문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

❓ 풀이 방법


  1. 문자열에서 replaceAll로 영소문자들을 모두 빈문자열로 바꿔준다.
    list에 추가한 후 정렬하고 배열로 바꿔서 리턴한다.
  2. Stream 사용
    Arrays.stream() : 문자열 배열을 스트림으로 변환한다.
    String.matches() : 특정 패턴의 문자열을 포함하는지 확인할 수 있다.
    mapToInt(Integer::parseInt) : 문자열을 정수로 변환하고, 이를 IntStream으로 매핑
    sorted() : 오름차순 정렬한다.
    toArray() : 배열로 변환한다.

📌 Code


  1. list 사용
import java.util.*;

class Solution {
    public int[] solution(String my_string) {
        ArrayList<Integer> list = new ArrayList<>();
        String str = my_string.replaceAll("[a-z]","");
        for(char c : str.toCharArray()) {
            list.add(Character.getNumericValue(c));
        }
        list.sort(Comparator.naturalOrder());
        int[] answer = new int[list.size()];
        for(int i = 0; i < answer.length; i++) answer[i] = list.get(i);
        return answer;
    }
}
  1. Stream 사용
import java.util.*;
class Solution {
    public int[] solution(String my_string) {
        String[] str = my_string.split("");
        int[] answer = Arrays.stream(str)
        					.filter(s -> s.matches("[0-9]"))
                            .mapToInt(Integer::parseInt)
                            .sorted()
                            .toArray();
        return answer;
    }
}

0개의 댓글