백준 1264번 '모음의 개수' 문제
https://www.acmicpc.net/problem/1264
조건
모음 'a', 'e', 'i', 'o', 'u' 대소문자 구분 없이 개수를 구하라. 한 줄에 '#' 한 글자만이 주어지면 프로그램을 종료한다.
접근
for(int i = 0; i < str.length(); i++){
if(str.CharAt(i) = 'a' || str.CharAt(i) = 'e' || str.CharAt(i) = 'i' || str.CharAt(i) = 'o' || str.CharAt(i) = 'u' || str.CharAt(i) = 'A' || str.CharAt(i) = 'E' || str.CharAt(i) = 'I' || str.CharAt(i) = 'O' || str.CharAt(i) = 'U' )
}
처음엔 단순하게 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' 모두를 조건에 추가하여 개수를 파악하려했다. 하지만 코드가 너무 길어지고 지저분해 보였다. 이렇게 된다면 10개를 비교해야되기 때문에 소요가 커질 수 밖에 없었다.
Scanner sc = new Scanner(System.in);
while(true) {
int count = 0;
String str = sc.nextLine();
if (str.equals("#"))
break;
for (char ch : str.toLowerCase().toCharArray()) {
if ("aeiou".indexOf(ch) != -1) {
count++;
}
}
System.out.println(count);
}
toLowerCase()로 모든 문자를 소문자로 만든다. 그후 toCharArray()로 입력받은 srt 문자열을 배열로 만들어 각각의 요소를 접근할 수 있도록 만들었다.
그 후, 모음 문자열 "aeiou"를 indexOf()로 접근하여 str 문자 배열의 각 원소를 비교한다. 여기서 일치하는 요소(모음)가 없을 경우 -1를 리턴하는 indexOf()의 원리를 활용하여 조건문을 작성하였다.
'백준 > Java' 카테고리의 다른 글
| [JAVA] 소수 구하기 - 에라토스테네스의 체 (0) | 2025.05.02 |
|---|---|
| [JAVA] 백준 2839번 설탕 배달 - 모든 풀이법 (그리디, DP, BFS, 완전탐색, 시간 복잡도 O(1)) (0) | 2025.03.27 |
| [JAVA] 입력 받은 숫자의 개수 구하기(정렬, 이분 탐색, HashMap, TreeMap) (1) | 2025.03.20 |
| [JAVA] 많은 수를 효율적으로 오름차순 정렬해 입출력하기. (1) | 2025.03.05 |
| [JAVA] 해당 날짜의 요일 구하기 (0) | 2025.03.04 |