알고리즘 -문자열 정렬하기 (1) - 120850

워니·2023년 3월 27일

알고리즘

목록 보기
8/30
post-thumbnail

[level 0] 문자열 정렬하기 (1) - 120850

문제 링크

성능 요약

메모리: 84.7 MB, 시간: 2.95 ms

구분

코딩테스트 연습 > 코딩테스트 입문

채점결과


정확성: 100.0
합계: 100.0 / 100.0

문제 설명

문자열 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]

입출력 예 설명

입출력 예 #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 합니다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges


  • 내 풀이
class Solution {
    public int[] solution(String my_string) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < my_string.length(); i++) {
            char a = my_string.charAt(i);
            if (a <= 57 && a >= 48) {
                list.add((int) a - '0');
            }
        }
        Collections.sort(list);
        int[] answer = list.stream().mapToInt(i -> i).toArray();
        return answer;
    }
}
  • TDD
class SolutionTest {

    @Test
    @DisplayName("hi12392 = [1, 2, 2, 3, 9]")
    void solution() {
        int[] ans = {1, 2, 2, 3, 9};
        Assertions.assertThat(new Solution().solution("hi12392")).isEqualTo(ans);
    }

    @Test
    @DisplayName("p2o4i8gj2 = [2, 2, 4, 8]")
    void solution2() {
        int[] ans = {2, 2, 4, 8};
        Assertions.assertThat(new Solution().solution("p2o4i8gj2")).isEqualTo(ans);
    }

    @Test
    @DisplayName("abcde0 = [0]")
    void solution3() {
        int[] ans = {0};
        Assertions.assertThat(new Solution().solution("abcde0")).isEqualTo(ans);
    }
}

  • 풀이

    문제에서 return 타입을 명시해줬다
    Collections.sort와
    stream을 사용해보기위해
    List 타입의 arrayList를 만들어
    0~9 아스키코드값에 해당하는지 범위를 찾고
    해당한다면 '0'을 뺴줘서 다시 숫자 형태로 변환 후
    list에 담아줬다
    Collection으로 sort를 하고
    solution 메서드에 return으로 명시되어있는 int[] 형태로 변환해줘야하는데
    이 과정에서 stream을 사용해보았다.
    stream은 개념을 잘 잡아야할것같다.

profile
Backend-Dev

0개의 댓글