코딩테스트/JAVA

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

할루솔이 2023. 10. 14. 17:21
반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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

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

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


입출력 예


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


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


👉 풀이과정

1. x를 기준으로 문자열을 분리해서 배열에 넣는다.

2. 배열 정렬하고 리스트를 하나 생성한다.

3. 배열이 비어있지 않을 때만 리스트에 값을 넣어준다.

 

📌 제출코드

import java.util.*;
class Solution {
    public String[] solution(String myString) {
        String[] answer = myString.split("x");
        Arrays.sort(answer);
        ArrayList<String> list = new ArrayList();
        for(int i=0;i<answer.length;i++){
            if(!answer[i].isEmpty()){
                list.add(answer[i]);
            }
        }
        return list.toArray(new String[0]);
    }
}

 

테스트케이스는 다 맞는데 제출만 하면 코드가 다 틀렸다!!!!!

왜?????????

찾아보니까 

"dxccxbbbxxaaaa" ["aaaa", "bbb", "cc", "d"]

이것처럼 x가 연달아 나올때 오류가 나서 그랬던 것....

빈 값이 배열에 포함돼서 싹 다 오류가 났다..

 

그래서 if조건문에 isEmpty()를 사용해서 빈 값을 걸렀고 남은 값들만 리턴했더니 성공했다!!!!

 

 

반응형