[프로그래머스] Lv.0 문자열 잘라서 정렬하기

이다혜·2023년 10월 30일
0

프로그래머스

목록 보기
35/61
post-thumbnail

📎 문제 출처


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

📌 문제 설명


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

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

❓ 풀이 방법


  1. 처음에는 split() 메서드를 사용해서 x를 기준으로 문자열을 잘라냈는데 샘플 테스트 케이스는 통과하지만 제출하면 전부 실패였다.
  2. 뭐가 문제인지 찾아보니 x가 연속으로 나오면 빈문자열이 배열에 포함되어있는 것이 문제였다.
  3. 이를 해결하기 위해 일단 split()한 후에 빈문자열이 아닌 경우에만 list에 추가하고 정렬한 후 마지막에 배열로 변환해서 리턴했더니 통과했다.
  4. 더 쉬운 방법이 있는지 찾아보니 StringTokenizer를 사용하면 빈문자열은 포함하지 않는다고 한다.

📌 Code


  1. ArrayList 사용
import java.util.*;
class Solution {
    public String[] solution(String myString) {
        ArrayList<String> arrlist = new ArrayList<>();
        String[] my_string = myString.split("x");
        for(String s : my_string) {
            if(!s.equals("")) arrlist.add(s);
        }
        Collections.sort(arrlist);
        String[] answer = arrlist.toArray(new String[arrlist.size()]);
        return answer;
    }
}
  1. StringTokenizer 사용
import java.util
class Solution {
    public String[] solution(String myString) {
        StringTokenizer st = new StringTokenizer(myString, "x");
        int N = st.countTokens();
        String[] answer = new String[N];
        for(int i = 0; i < N; i++) {
            answer[i] = st.nextToken();
        }
        Arrays.sort(answer);
        return answer;
    }
}

0개의 댓글