모음 제거
https://school.programmers.co.kr/learn/courses/30/lessons/120849
문자열 my_string 이 매개변수로 주어질 때 a , e , i , o , u 모음을 제거한 문자열을 반환하는 문제이다.
내가 풀이한 방법은 이렇다.
foreach 로 문자열을 순회하면서 answer 에 대입하되 a , e , i , o , u 와 같으면 대입하지 않으면 될 것 같다.
using System;
public class Solution
{
public string solution(string my_string)
{
string answer = "";
foreach(char c in my_string)
{
if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
{
continue;
}
answer += c;
}
return answer;
}
}
작성한 코드도 가독성이 좋고 명확한 것 같은데 뭔가 조금 아쉽다.
문자열을 순회하며 Replace로 교체하기
using System;
public class Solution
{
public string solution(string my_string)
{
foreach(char c in "aeiou")
my_string = my_string.Replace(c.ToString(), "");
return my_string;
}
}
"aeiou" 를 순회하며 각 모음을 빈 문자열로 교체하는 방식이다.
Replace 메서드를 사용하여 코드가 더 간결해졌다.
- 'a' → my_string.Replace("a", "") → 'e' → Replace("e", "") → ... 순서로 5번 반복
- Replace는 string을 인자로 받기 때문에 c.ToString() 으로 변환 필요
Contains
using System;
public class Solution
{
public string solution(string my_string)
{
string answer = "";
string vowels = "aeiou";
foreach(char c in my_string)
{
if(!vowels.Contains(c))
answer += c;
}
return answer;
}
}
LINQ
using System;
using System.Linq;
public class Solution
{
public string solution(string my_string)
{
return new string(my_string.Where(c => !"aeiou".Contains(c)).ToArray());
}
}
LINQ 를 사용하면 코드가 훨씬 더 간결해진다.
Regex
using System;
using System.Text.RegularExpressions;
public class Solution
{
public string solution(string my_string)
{
return Regex.Replace(my_string, "[aeiou]", "");
}
}
[ aeiou ] 는 정규식 문자 클래스로 , 괄호 안의 문자 중 하나와 일치하는 모든 문자를 "" 로 교체한다.
- Replace 방식은 모음 5번 순회가 필요하지만 Regex 는 한 번의 순회로 처리한다.
- 단 , Regex 는 내부적으로 패턴 컴파일 비용이 있어 단순한 문제에선 오히려 느릴 수 있다.
- 반복 호출 시엔 Regex.Replace 대신 컴파일된 인스턴스 사용이 유리하다.
// 반복 호출 최적화
private static readonly Regex _vowelRegex = new Regex("[aeiou]", RegexOptions.Compiled);
return _vowelRegex.Replace(my_string, "");
'📖TIL > ✅CodingTest' 카테고리의 다른 글
| 두 숫자를 비교하는 내장 메서드 (0) | 2026.06.09 |
|---|---|
| 옷가게 할인 받기 (0) | 2026.06.01 |
| 문자 리스트를 문자열로 변환 (0) | 2026.05.29 |
| 숨어있는 숫자의 덧셈 (0) | 2026.05.16 |
| 문자열 패딩 ( Padding ) (0) | 2026.05.14 |