Q 1264 모음의 개수

💡 문제 요약 및 분석

영문 문장을 입력받아 모음의 개수를 세어 출력하면 되는 문제! (모음은 ‘a’, ‘e’, ‘i’, ‘o’, ‘u’이며 대문자 또는 소문자)

💡 알고리즘 설계

  1. 입력

    • while 문으로 문자열을 입력받는다. # 글자가 나오면 종료한다.
  2. 연산

    • for 문으로 문자열을 char 로 변환한다. 이 때, 문자를 전부 소문자로 변환한다.
    • 조건문으로 모음인 경우 분기하여 누적합한다.
  3. 출력

    • StringBuilder 로 한 번에 출력한다.

💡 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        while (true) {
            String line = br.readLine();
            if (line.equals("#")) break;
            line = line.toLowerCase();
            int sum = 0;
            for (int i = 0; i < line.length(); i++) {
                char c = line.charAt(i);
                if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
                    sum += 1;
                }
            }
            sb.append(sum).append("\n");
        }
        System.out.println(sb);
    }

}

💡 시간 복잡도, 공간 복잡도

시간 복잡도공간 복잡도
O(n * m)O(1)
  • ⏱️ 입력받은 문자열 길이만큼 n 번 순회하고, 문자열이 m 개이면 O(n * m)

  • 🧠 입력 저장, 연산, 출력 모두 고정 공간을 사용하므로 O(1) 이다.

💡 느낀점 및 기억할 정보

  • Java 에서 대소문자 변환 : 변환할 문자열.toLowerCase() or .toUpperCase();