[programmers] 문자열 잘라서 정렬하기 - Java

문자열을 "x"를 기준으로 자른 후 사전순으로 정렬된 배열을 반환하는 solution 함수를 작성해야 합니다. 빈 문자열은 반환하지 않습니다. 주어진 예시를 통해 문제를 이해하고, sort 메소드와 stream을 활용하여 문제를 해결할 수 있습니다.
Jan 17, 2024
[programmers] 문자열 잘라서 정렬하기 - Java

문제 설명

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

제한사항

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

입출력 예

myString
result
"axbxcxdx"
["a","b","c","d"]
"dxccxbbbxaaaa"
["aaaa","bbb","cc","d"]

입출력 예 설명

입출력 예 #1
  • myString을 "x"를 기준으로 자른 배열은 ["a","b","c","d"]이며, 이 배열은 이미 사전순으로 정렬된 상태입니다. 따라서 해당 배열을 return 합니다.
입출력 예 #2
  • myString을 "x"를 기준으로 자른 배열은 ["d","cc","bbb","aaaa"]이며, 이 배열을 사전순으로 정렬하면 ["aaaa","bbb","cc","d"]입니다. 따라서 해당 배열을 return 합니다.

solution.java

import java.util.Arrays; class Solution { public String[] solution(String myString) { String[] myString_arr = myString.split("x"); Arrays.sort(myString_arr); return Arrays.stream(myString_arr).filter(item -> !item.equals("")).toArray(String[]::new); } }
 

핵심 키워드

  • Arrays.sort() 메소드는 void 값을 리턴하기 때문에 return 문에 바로 작성할 수 없다.
  • Arrays.stream(대상 배열)을 통해 대상 배열의 값에 하나하나 접근할 수 있다.
    • .filter() 메소드를 통해 원하는 조건의 값을 포함시킬 수 있다.
    • .toArray(String[]::new) 메소드를 통해 Object 배열을 String 배열로 바꿀 수 있다.
 

결론!

해당 문제를 풀면서 sort 메소드와 stream을 활용하는데 어려움을 겪었지만, 사용법을 이해하는데 도움이 되었다
 
Share article

👨🏻‍💻DriedPollack's Blog