본문 바로가기

Study/BaekJoon

[백준 자바JAVA] 1264번 - 모음의 개수

728x90

https://www.acmicpc.net/problem/1264

 

1264번: 모음의 개수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄

www.acmicpc.net


● 문제

문장을 입력 받은 뒤 영어의 모음 a, e, i, o, u 의 갯수를 출력해 주고

#을 입력받으면 프로그램을 종료하는 알고리즘이다.


● 코드

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		
		while(true) {
			String a = s.nextLine().toLowerCase();
			String[] b = a.split("");
			int count;
			
			count = 0;
			
			if(a.equals("#"))
				break;
			
			for(int i = 0; i < b.length; i++)
			{
				if(b[i].equals("a") || b[i].equals("e") || b[i].equals("i") || b[i].equals("o") || b[i].equals("u"))
					count++;
			}
			
			System.out.println(count);

		}
		
		s.close();
	}

}

해당 알고리즘을 코딩할 때 실수한 부분이 있어 작성하려고한다.

1. 먼저 String의 경우 문자열을 비교하려면 == 연산자가 아닌 equals를 사용하여 비교를 해주어야한다.

나는 이를 까먹고 ==연산자를 사용하여 왜 안되지 이러고 있다가 순간적으로 equals가 생각 나 해결 하였다.

 

2. #을 입력시 끝내는 문장의 경우 글자를 비교하기 전에 코딩이 되어야 한다.

뒤에 코딩을 할 시 #의 모음갯수인 0도 출력하여서 문제를 틀리게된다.

 

3. 문장 입력시 대소문자 관계없이 비교가 되어야한다.

나는 이를 해결하고자 toLowerCase를 사용하여 입력받은 문장의 모든 문자를 소문자로 바꿔주었다.


728x90