본문 바로가기
코딩 테스트/프로그래머스 (기초)

[C#][프로그래머스 > 코딩테스트 기초] 공백으로 구분하기 2

by 스누ㅍl 2024. 7. 31.

프로그래머스 > 코딩테스트 연습 > 코딩 기초 트레이닝 > 공백으로 구분하기2

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

 

📒 문제

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

 

제한사항

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

 

입출력 예

my_string result
" i    love  you" ["i", "love", "you"]
"    programmers  " ["programmers"]

 

입출력 예 설명

 

입출력 예 #1

  • 예제 1번의 my_string은 " i    love  you"로 공백을 기준으로 단어를 나누면 "i", "love", "you" 3개의 단어가 있습니다. 따라서 ["i", "love", "you"]를 return 합니다.

입출력 예 #2

  • 예제 2번의 my_string은 "    programmers  "로 단어는 "programmers" 하나만 있습니다. 따라서 ["programmers"]를 return 합니다.

💻 소스코드

using System;
using System.Linq;

public class Solution {
    public string[] solution(string my_string) {
        return my_string.Split(' ').Where(w => w.Trim() != "").ToArray();
    }
}

 

다른 풀이

using System;
using System.Linq;

public class Solution {
    public string[] solution(string my_string) {
        return my_string.Split(" ", StringSplitOptions.RemoveEmptyEntries);
    }
}

 

참고 사이트

StringSplitOptions : https://learn.microsoft.com/ko-kr/dotnet/api/system.stringsplitoptions?view=net-8.0

📝 풀이

첫번째 풀이는 string을 ' '기준으로 split을 시켜 배열로 담은 다음 where 메서드를 사용해서 각 문자열을 trim 했을 때 빈 문자열이 아닌 경우만 array로 만들었다.

 

두번째 풀이는 split 메서드 옵션에서 빈 문자열인 경우를 제거해주는 옵션을 발견해서 적용해 보았다.

split 메서드를 사용할 때 StringSplitOptions.RemoveEmptyEntries를 하면 빈 문자열을 제거해줘서 원하는 결과를 얻을 수 있었다. 


관련 포스팅

 

[C# 문법] string.Split() + StringSplitOptions

string의 메서드 중 split에 대해 좀 더 자세히 다루기 위해 따로 기록한다. ● Split(char[]|string[], *count, *option) 기준 문자 기준으로 문자열을 잘라 문자열로 반환하는 string 메서드 *은 생략이 가능한

twd0622.tistory.com

 

 

[C# 문법] string 메서드 모음

최근 수정: 2024.07.31string 메서드 내용 중 새로 알게되거나 사용했던 메서드들 기록하는 곳입니다. 주요 메서드Substring([시작위치], [문자열길이]): string의 시작위치부터 문자열 길이만큼 추출해준

twd0622.tistory.com