문제
해결 방안 고민
•
알파벳 모음을 구분하여 카운팅하는 문제이다.
해결 방법
•
입력한 알파벳을 전부 대문자 혹은 소문자로 바꾼 다음에 switch ~ case 를 활용하여 구분해준다.
코드
•
첫 번째 풀이
package algo250318;
import java.io.*;
// 모음의 개수 - 브론즈 4
public class Baek1264 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
while (true) {
str = br.readLine();
if (str.equals("#")) {
break;
}
str = str.toLowerCase();
int length = str.length();
int count = 0;
for (int i = 0; i < length; i++) {
switch (str.charAt(i)) {
case 'a':
count++;
break;
case 'e':
count++;
break;
case 'i':
count++;
break;
case 'o':
count++;
break;
case 'u':
count++;
break;
default:
}
}
System.out.println(count);
}
}
}
Java
복사
•
두 번째 풀이 - 배열의 특징을 활용함
package algo250318;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
// 모음의 개수 - 브론즈 4
public class Baek1264_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "";
while (true) {
str = br.readLine();
if (str.equals("#")) {
break;
}
str = str.toLowerCase();
int length = str.length();
int[] arr = new int[5];
for (int i = 0; i < length; i++) {
switch (str.charAt(i)) {
case 'a':
arr[0]++;
break;
case 'e':
arr[1]++;
break;
case 'i':
arr[2]++;
break;
case 'o':
arr[3]++;
break;
case 'u':
arr[4]++;
break;
default:
}
}
length = arr[0] + arr[1] + arr[2] + arr[3] + arr[4];
bw.write(String.valueOf(length));
bw.newLine();
}
bw.flush();
bw.close();
br.close();
}
}
Java
복사
•
세 번째 풀이 - switch ~ case 문의 활용 참고
package algo250318;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 모음의 개수 - 브론즈 4
public class Baek1264_3 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
while (true) {
str = br.readLine();
if (str.equals("#")) {
break;
}
str = str.toLowerCase();
int length = str.length();
int count = 0;
for (int i = 0; i < length; i++) {
switch (str.charAt(i)) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
count++;
break;
default:
}
}
System.out.println(count);
}
}
}
Java
복사
정리
str = str.toLowerCase();
int length = str.length();
int count = 0;
Java
복사
•
문제풀이 과정에서 count 변수를 str과 length 사이의 위치시키면 속도가 더 떨어지는 현상을 확인할 수 있었는데, count 변수를 다시 length 하단에 위치시켜서 진행을 하니 속도가 개선되었다. 변수의 위치에 따라서 속도가 개선될 수도 있다는 것을 확인할 수 있었다.