프로그래머스 문자열 잘라서 정렬하기

KIMYEONGJUN·2026년 7월 12일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

문자열 myString이 주어집니다.
"x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 빈 문자열은 반환할 배열에 넣지 않습니다.

내가 이 문제를 보고 생각해본 부분

myString.split("x") 구문을 이용해 입력된 문자열을 문자 "x"를 기준으로 자른다.
이때 "x"가 연속되거나 문자열 시작/끝에 있을 경우 빈 문자열이 생긴다.
Arrays.stream(parts).filter(s -> !s.isEmpty()) 부분에서 분할된 배열 중 빈 문자열("")인 요소는 제거한다.
이는 "x"가 연속되거나 문자열의 앞뒤에 있을 때 불필요한 빈 항목을 배제하기 위함이다.
.sorted()는 스트림의 요소들을 사전순(알파벳 순서)으로 정렬시킨다.
따라서 "axbxcxdx"는 잘라낸 ["a","b","c","d"]가 이미 정렬된 상태이며, "dxccxbbbxaaaa"의 경우에도 분리된 배열 ["d","cc","bbb","aaaa"]가 ["aaaa","bbb","cc","d"]로 정렬된다.
.toArray(String[]::new)로 처리한 결과 스트림을 다시 문자열 배열로 변환해 반환한다.

코드로 구현

import java.util.Arrays;

class Solution {
    public String[] solution(String myString) {
        String[] parts = myString.split("x");
        return Arrays.stream(parts)
                     .filter(s -> !s.isEmpty())
                     .sorted()
                     .toArray(String[]::new);
    }
}

프로그래머스 코드

package programmers;

import java.util.Arrays;

// 프로그래머스 문자열 잘라서 정렬하기
public class Main79 {
    public static void main(String[] args) {
        String myString1 = "axbxcxdx";
        String myString2 = "dxccxbbbxaaaa";

        System.out.println(Arrays.toString(solution(myString1))); // [a, b, c, d]
        System.out.println(Arrays.toString(solution(myString2))); // [aaaa, bbb, cc, d]
    }

    public static String[] solution(String myString) {
        String[] parts = myString.split("x");
        return Arrays.stream(parts)
                .filter(s -> !s.isEmpty())
                .sorted()
                .toArray(String[]::new);
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글