Q 1264 모음의 개수
💡 문제 요약 및 분석
영문 문장을 입력받아 모음의 개수를 세어 출력하면 되는 문제! (모음은 ‘a’, ‘e’, ‘i’, ‘o’, ‘u’이며 대문자 또는 소문자)
💡 알고리즘 설계
입력
- while 문으로 문자열을 입력받는다.
#
글자가 나오면 종료한다.
- while 문으로 문자열을 입력받는다.
연산
- for 문으로 문자열을 char 로 변환한다. 이 때, 문자를 전부 소문자로 변환한다.
- 조건문으로 모음인 경우 분기하여 누적합한다.
출력
- 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();