본문 바로가기

[BOJ] - JAVA

[백준] 10820 : 문자열 분석 JAVA 풀이

1. 소문자, 대문자, 숫자, 공백의 개수를 셀 int 배열 array를 생성한다.

2. 입력이 없을 때까지 문자열을 입력받는다.

String 변수인 str에 br.readLine()으로 입력받은 내용을 저장했다.

그리고 str이 null이면(더 이상 입력되는 것이 없으면) 반복문을 종료한다.

3. str의 길이만큼 반복문을 실행한다.

str의 한 글자 한 글자가 소문자인지, 대문자인지, 숫자인지, 공백인지 검사하고 그 개수를 array 배열에 저장한다.

4. array에 저장된 값을 출력한다.

5. array를 다시 0으로 초기화해준다. 필자는 이 과정을 빠트려서 처음엔 오답이 나왔었다...

한 문장의 대,소문자, 숫자, 공백의 개수를 세는 것이기 때문에

새로운 문장을 입력받을 때마다 이 배열을 꼭 초기화해줘야 한다!

 

import java.io.*;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] array = new int[4];
        String str = new String();
        
        while((str = br.readLine())!=null){
            for(int i=0;i<str.length();i++){
                char c = str.charAt(i);
                if(c>='a'&&c<='z'){
                    array[0]++;
                }
                else if(c>='A'&&c<='Z'){
                    array[1]++;
                }
                else if(c>='0'&&c<='9'){
                    array[2]++;
                }
                else if(c==' '){
                    array[3]++;
                }
            }
            for(int val : array){
                System.out.print(val+" ");
            }
            System.out.println();
            for(int i=0;i<array.length;i++){
                array[i] = 0;
            }
        }
    }
}