ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 / JAVA] 문자열 분석 10820
    알고리즘/문제풀기 2019. 7. 1. 21:25

    문제

    문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.

    각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.

    입력

    첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.

    출력

    첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.

    나의 코드

    import java.util.*;
    
    
    public class Main {
    	
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
            String test = "";
            while(sc.hasNext()) {		// 입력된 토큰이 있으면 true
            	int small = 0;
            	int large = 0;
            	int num = 0;
            	int space = 0;
                test = sc.nextLine();
                for(int i=0; i<test.length(); i++) {
        			if(test.charAt(i) == ' ') space++;
        			else if('a'<=test.charAt(i) && 'z'>=test.charAt(i)) small++;
        			else if('A'<=test.charAt(i) && 'Z'>=test.charAt(i)) large++;
        			else if(0<=(int)test.charAt(i)-48 && 9>=(int)test.charAt(i)-48) num++;
        		}
                System.out.println(small + " " + large + " " + num + " " + space);
            }
            sc.close();
    	}
    	
    }
    

     

    Scanner의 hasNext함수를 사용해서 입력을 받아주었다. 

    hasNext()는 다음 토큰의 유무를 반환해주는 함수이다. 다음 토큰이 있으면 true를 반환한다.

    줄 별로 test에 저장을 한다.

    test를 char로 변환해서 하나씩 비교를 해준다. 

    숫자일 때, char를 다시 int로 반환해 주어야 하는데 char형의 '8'은 숫자로 56이기 때문에 48을 빼주어야한다.

     

    댓글

Designed by Tistory.