더북(TheBook)

005 모음과 자음 세기

 

아래 코드는 영어를 다루지만 여러 언어를 다룰 줄 안다면 모음과 자음 수가 다를 수 있고 코드도 그에 맞게 바뀌어야 한다.

첫 번째 해법에서는 문자열 내 문자를 순회하며 다음을 수행한다.

1. 현재 문자가 모음인지 확인해야 한다(영어는 모음이 5개뿐이니 간단하다. 다른 언어에는 모음이 더 있을 수 있으나 그래도 많지 않다).

2. 현재 문자가 모음이 아니면 'a'에서 'z' 사이인지(즉, 현재 문자가 자음인지) 확인한다.

우선 주어진 String 객체를 소문자로 변환해야 한다. 이렇게 하면 대문자와 비교하지 않아도 된다. 예를 들어 'A''a' 대신 'a'만 비교하면 된다.

위 해법을 코드로 구현하면 다음과 같다.

private static final Set<Character> allVowels
            = new HashSet(Arrays.asList('a', 'e', 'i', 'o', 'u'));
public static Pair<Integer, Integer>
    countVowelsAndConsonants(String str) {
  str = str.toLowerCase();
  int vowels = 0;
  int consonants = 0;

  for (int i = 0; i < str.length(); i++) {
    char ch = str.charAt(i);
    if (allVowels.contains(ch)) {
      vowels++;
    } else if ((ch >= 'a' && ch <= 'z')) {
      consonants++;
    }
  }

  return Pair.of(vowels, consonants);
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.