새소식

Programmers Coding Test/Java

[프로그래머스 120849] Java - 코딩테스트 입문 / 모음 제거

  • -

 

 

모음 제거

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

1)  문제

영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 
문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
my_string은 소문자와 공백으로 이루어져 있습니다.
1 ≤ my_string의 길이 ≤ 1,000

 

 

 

2)  예시

 

 

Result Table
my_string result
"bus" "bs"
"nice to meet you" "nc t mt y"

 

 

 

입출력 예 #1
"bus"에서 모음 u를 제거한 "bs"를 return합니다.


입출력 예 #2
"nice to meet you"에서 모음 i, o, e, u를 모두 제거한 "nc t mt y"를 return합니다.

 

 

 

 

 

3)  풀이

 

 

 

1. 클래스 선언을 해줍니다

● class Solution {

클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.

 

 

 

 

2. 문자열 my_string을 매개변수로 하는 solution 메소드를 선언합니다.

solution은 문자열을 반환하므로 데이터타입을 String로 합니다.

●  public String solution(String my_string) {

 

 

 

 

3. 제한사항을 확인하고, 만족하지 않을 경우 예외처리합니다.

●     if(1> my_string.length() || my_string.length() > 1000){
            throw new IllegalArgumentException("제한사항을 확인하세요");
      }
        

 

 

 

4. StringBuilder 객체 result를 생성해줍니다.

우선 for 반복문을 통하여 my_string 문자열의 문자 하나하나를 charAt 메소드로 c라는 변수로 가져옵니다.

그 문자 c가 모음인 a, e, i, o, u에 해당하지 않을 경우에는 result에 추가해주도록 합니다.

즉, 모음은 무시하기 때문에 모음을 삭제한 것과 동일한 효과가 있습니다.

 

최종적으로 result를 반환해줄 때, StringBuilder 타입이므로 toString으로 문자열 형변환을 해줍니다.

    StringBuilder result = new StringBuilder();

        for (int i = 0; i < my_string.length(); i++) {
            char c = my_string.charAt(i);
            if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u') {
                result.append(c);
            }
        }
        return result.toString();
    }
}

 

 

 

 

 

 

 

 

 

4)  코드

 

class Solution {
    public String solution(String my_string) {
        
        if(1> my_string.length() || my_string.length() > 1000){
            throw new IllegalArgumentException("제한사항을 확인하세요");
        }
        
        StringBuilder result = new StringBuilder();

        for (int i = 0; i < my_string.length(); i++) {
            char c = my_string.charAt(i);
            if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u') {
                result.append(c);
            }
        }
        return result.toString();
    }
}

 

 

 

 

 

 

 

5)  느낀점

비슷한 문제를 2-3번 푼 것 같으나, 이번에 풀 때 charAt 메소드가 떠오르지 않아 막혔습니다.

그리고 문제를 풀 방법이 두가지가 떠올랐는데

1) StringBuilder append를 사용할지

2) String "" 빈문자열로 만들고 char을 +해줄지

이 중에서는 첫번째 방법을 선택했습니다.

 

복습의 중요성... charAt을 잊어버리니 바로 문제를 해결하지 못한 제모습을 반성합니다.

toCharArray도 쓸 수 있었지만!! 아직은 스스로가 이해가 잘 되는 방식에 치우치고 있는 것 같습니다.

 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.