Algorithms/프로그래머스

[프로그래머스] '모음 제거' - Java

LEFT 2023. 5. 3. 13:04

<문제 제시>

<문제설명>
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다.
문자열 my_string이 매개변수로 주어질 때
모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

<예시 입출력>


<문제 해결 과정>

Try 1)

StringBuffer sb = new StringBuffer();
    sb.append(my_string);
    int target = -1;
    for(int i = 0; i < my_string.length(); i++) {
        if(my_string.contains("a") || my_string.contains("e") ||
                my_string.contains("i") || my_string.contains("o") ||
                my_string.contains("u")) {
            target = i;
        }

        if(target != -1) {
            sb.deleteCharAt(target);
        }

    }

    answer = sb.toString();

StringBuffer 클래스를 활용하여 문자열의 특정 인덱스를 제거하고자 하였으나, 인덱스 범위의 오류가 발생하였다.

>> sb.deleteCharAt() 을 활용하고자 하였음

StringBuffer인 sb에 append를 통해 문자열을 넣고,

이 문자열이 a, e, i, o, u까지 포함한다면 target을 해당 인덱스로 초기화한다.

만약 인덱스가 검출되지 않으면 sb.deleteCharAt(target)을 통해 해당하는 인덱스의 문자를 삭제하고자 하였다.

Solution 1)

if(my_string.contains(target[i])) {
        		
    // a, e, i, o, u가 있을시 모두 "" 제거해준 후 answer에 누적한다.
    answer = my_string.replaceAll(target[i], "");
    my_string = answer;

}

contains를 활용하고, replaceAll을 통해 해당하는 모음은 "" (공백)으로 초기화해주는 방법을 채택하였다.


<전체코드>

public class remove_vowel {

	public static String solution(String my_string) {
        String answer = "";
        
        String[] target = {"a", "e", "i", "o", "u"};
        
        for(int i = 0; i < target.length; i++) {
        	if(my_string.contains(target[i])) {
        		
        		// a, e, i, o, u가 있을시 모두 "" 제거해준 후 answer에 누적한다.
        		answer = my_string.replaceAll(target[i], "");
        		my_string = answer;
        		
        	}
        	
        	// 제거할 모음이 없을 경우에는 다시 리턴해준다.
        	else {
        		answer = my_string; 
        	}
        }
        
        return answer;
    }
	
	public static void main(String[] args) {
		String my_string = "nice to meet you";
		
		System.out.println(solution(my_string));
	}

}

모음 제거라는 조건이 아니더라도 특정 조건에 해당하는 문자를 없애고자할때 replaceAll("A", "") 등의

메서드를 활용할 수 있음을 알 수 있었다.


문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120849

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr