프로그래머스 : 공백으로 구분하기 2

Digeut·2024년 3월 30일
0

프로그래머스

목록 보기
151/164

❔문제설명

단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

🤔아이디어

공백을 기준으로 나누는 배열을 만든 다음에 List에 공백을 제외하고 담아주면 되지 않을까?

❌틀린코드

import java.util.*;

class Solution {
    public String[] solution(String my_string) {
        String[] answer;
        List<String> str = new ArrayList<>();
        String[] arr = my_string.split(" ");
        for(int i = 0 ; i < arr.length ; i++){
            if(arr[i].equals(" ")){
                continue;
            } else {
                str.add(arr[i]);
            }
        }
        answer = str.stream().toArray(String[]::new);
        return answer;
    }
}

🙄오류


공백이 제대로 다 삭제가 되지 않는데 어디가 문제일까?

💡코드풀이

import java.util.*;

class Solution {
    public String[] solution(String my_string) {
        String[] answer;
        List<String> str = new ArrayList<>();
        String[] arr = my_string.split("\\s+");
        for(int i = 0 ; i < arr.length ; i++){
            if(arr[i].equals("\\s")){
                continue;
            } else {
                if(!arr[i].isEmpty()){ 
                //연속된 구분자로 인해서 빈문자열이 발생하므로 제외
                    str.add(arr[i]);
                }
            }
        }
        answer = str.stream().toArray(String[]::new);
        return answer;
    }
}

✔️문법확인

  • split : 주어진 구분자를 기준으로 문자열을 나누는 함수
    ⭐단, 연속된 구분자의 경우 빈 문자열을 생성하게 된다.
  • 정규표현식 : 문자열의 패턴을 표현하는데 사용되는 형식적인 언어
    \s 공백 하나 , \d 숫자 하나, \w 단어문자, . 문자하나, ^ 문자열의시작

java의 경우에는
위 그림처럼 표현해 이스케이프문자의 시작을 표현해야한다.

참조

https://hstory0208.tistory.com/entry/Java%EC%9E%90%EB%B0%94-List%EC%99%80-String%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%B0%EC%97%B4%EC%9D%84-%EC%84%9C%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B2%95

profile
개발자가 될 거야!

0개의 댓글