프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 문자열 잘라서 정렬하기(Java)

Sigfriede 2023. 5. 22. 01:10

  문제 설명

  문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.

  단, 빈 문자열은 반환할 배열에 넣지 않습니다.

 

  제한사항

  • 1 <= myString <= 100,000
    • myString은 알파벳 소문자로 이루어진 문자열입니다.

 

  입출력 예

myString result
"axbxcxdx" ["a", "b", "c", "d"]
"dxccxbbbxaaaa" ["aaaa", "bbb", "cc", "d"]
import java.util.Arrays;
class Solution {
    public String[] solution(String myString) {
        String[] answer = myString.replace("x", " ").trim().split("\\s+");
        Arrays.sort(answer);
        return answer;
    }
}

  answer 배열을 생성합니다. 만약 split 메소드를 이용하여 x를 기준으로 문자열을 분할하면 x가 연속으로 나올 경우에는 공백이 발생합니다. 문제에서 빈 문자열은 반환할 배열에 넣지 않기를 원합니다. 저는 split만을 이용하여 공백을 처리하는 방법을 모르기 때문에 다음과 같은 과정으로 진행했습니다.

  먼저 replace 메소드를 이용하여 문자열에서 x를 공백으로 변환합니다.  trim 메소드를 이용하여 공백을 제거하고, split 메소드를 이용하여 "\\s+"를 기준으로 문자열을 분리한 뒤 배열로 반환합니다. 여기서 "\\s+"는 정규식입니다. 하나 이상의 제거된 공백을 기준으로 문자열을 분할한다는 뜻입니다. 기본 표기는 \s+이지만, 이렇게 표기하면 문자열로 해석하기 때문에 올바른 구분을 위해 백슬래시를 한 번 더 입력합니다.

  문제는 사전 순으로 정렬한 배열을 원하므로 Arrays 클래스의 sort 메소드를 이용하여 answer 배열을 정렬합니다.