Soluiton 1) 내 풀이
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public String[] solution(String myStr) {
        String[] strArray = myStr.split("[a, b, c]");
        List<String> list = new ArrayList<>();

        if (strArray.length == 0) {
            return new String [] {"EMPTY"};
        }
        for (int i = 0; i < strArray.length; i++) {
            if (strArray[i].equals("")) {
                continue;
            }
            list.add(strArray[i]);
        }
        return list.toArray(new String[0]);
    }
}

 

코드 및 문제 리뷰

 

문자열을 a, b, c를 구분자로 나누어 문자열 배열로 반환하는 문제.

여기서 문자열의 요소가 비어있다면 반환 하지 않고 문자열 배열 자체가 비어있다면 문자열 배열의 요소로 EMPTY를 넣어 반환 시켜야한다.

 

  • 문자열 담을 List 생성
    •  List<String> list = new ArrayList<>();
  • 문자열 나누기
    • String[] strArray = myStr.split("[a, b, c]");
  • 문자열의 크기가 0 이라면 바로 EMPTY를 반환한다.
    • return new String [] {"EMPTY"};
  • 반복문을 돌며 빈 요소의 문자열 배열은 넘기기.
    • if (strArray[i].equals(""))
  • 비어있지 않은 요소들은 list에 담기
    • list.add(strArray[i]);
  • 만들어진 List를 새로운 배열로 반환
    • return list.toArray(new String[0]);

EMPTY의 처리를 나중에 생각해내고 수정해 처리했다.

처음엔 EMPTY가 공백문자열이라 착각해 시행착오가 있었지만, 금방 '빈' 문자열 이란걸 알 수 있어

배열의 크기가 0과 같다면. 이라고 조건문을 넣어 완료할 수 있었다.

+ Recent posts