공백으로 구분하기 2

nacSeo (낙서)·2024년 2월 22일
0

프로그래머스

목록 보기
99/169

문제 설명

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

제한사항

my_string은 영소문자와 공백으로만 이루어져 있습니다.
1 ≤ my_string의 길이 ≤ 1,000
my_string의 맨 앞과 맨 뒤에도 공백이 있을 수 있습니다.
my_string에는 단어가 하나 이상 존재합니다.

나의 코드

import java.util.List;
import java.util.ArrayList;

class Solution {
    public String[] solution(String my_string) {
        String[] arr = my_string.split(" ");
        List<String> list = new ArrayList<>();
        for(int i=0; i<arr.length; i++) {
            if(!arr[i].equals("")) {
                list.add(arr[i]);
            }
        }
        String[] answer = new String[list.size()];
        for(int j=0; j<list.size(); j++) {
            answer[j] = list.get(j);
        }
        return answer;
    }
}

다른 사람 코드

class Solution {
    public String[] solution(String my_string) {
        return my_string.trim().split("[ ]+");
    }
}
  1. trim()
  • 문자열의 앞뒤에 있는 공백을 제거
  1. split("[ ]+")
  • 정규표현식을 사용하여 문자열을 공백을 기준으로 분할
  • "[ ]+"는 하나 이상의 공백을 나타내는 정규표현식
  • 따라서 연속된 공백도 하나의 공백으로 처리

정리

  • trim() 메서드를 통해 양쪽의 공백을 제거
  • split("[ ]+") 메서드를 통해 공백을 기준으로 문자열을 나누어 줌
class Solution {
    public String[] solution(String myString) {
        return myString.trim().split("\\s+");
    }
}
  1. trim()
  • 이전과 동일하게 문자열의 앞뒤 공백을 제거
  1. split("\\s+")
  • 정규 표현식인 \\s+는 하나 이상의 공백 문자를 나타냄
  • \\s는 공백 문자(스페이스, 탭, 줄 바꿈 등)를 의미
  • +는 하나 이상의 앞선 패턴이 반복되는 것을 의미
  • 따라서 연속된 공백도 하나의 공백으로 처리

정리

  • trim() 메서드를 통해 문자열의 앞뒤 공백을 제거
  • split("\\s+") 메서드를 통해 공백을 기준으로 문자열을 나누어 줌

느낀 점

우선 주어진 문자열을 split()을 통해 공백 하나가 나올 때마다 배열로 잘라내고, 그 배열을 돌면서 공백으로 이루어진 배열이 아닐 때만 List에 추가해준 후, String 배열로 답을 도출해냈다. 다른 사람 코드를 보면 trim()메소드와 정규표현식을 활용하여 좀 더 간단한 코드로 문제를 풀 수 있었다. 😮

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글