본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 세 개의 구분자

by nam_ji 2024. 7. 18.

세 개의 구분자

문제

  • 문자열 myStr이 매개변수로 주어집니다.
  • 임의의 문자열이 주어질 때 문자 "a", "b", "c"를 구분자로
  • 문자열을 나눠 출력하는 문제입니다.
  • 입출력 예
    • myStr result
      "baconlettucetomato" ["onlettu", "etom", "to"]
      "abcd"
      ["d"]
      "cabab"
      ["EMPTY"]


테스트 (인텔리제이)

  • myStr을 replace 메서드를 이용하여 abc 문자들을 ,(쉼표)로 치환해줍니다.
  • 치환된 문자열을 split을 이용하여 공백 기준으로 문자열을 나눠주고
  • for문을 통해 나눠진 문자열을 하나씩 꺼내줍니다.
  • if문으로 하나씩 꺼내진 문자열이 빈 문자열인지 체크할 수 있도록 isEmpty 메서드를 사용하고 빈 문자열이 아니라면 List인 answer에 문자열을 추가하도록 합니다.
  • 또 다른 if문과 isEmpty를 이용하여 answer가 빈 배열인지 체크하고 빈 배열이라면 EMPTY라는 문자열을 추가하도록 해주면 됩니다.
import java.util.*;

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

        for (String s : newStr) {
            if (!s.isEmpty()) {
                answer.add(s);
            }
        }
        
        if (answer.isEmpty()) {
            answer.add("EMPTY");
        }
        
        return answer;
    }
}

// class Solution {
//     public String[] solution(String myStr) {
//         myStr = myStr.replaceAll("[abc]+", ",");
//         myStr = myStr.charAt(0) == ',' ? myStr.substring(1) : myStr;
//         myStr = myStr.isEmpty() ? "EMPTY" : myStr;
        
//         return myStr.split(",");
//     }
// }

 


프로그래머스 코드

import java.util.*;

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

        for (String s : newStr) {
            if (!s.isEmpty()) {
                answer.add(s);
            }
        }
        
        if (answer.isEmpty()) {
            answer.add("EMPTY");
        }
        
        return answer;
    }
}