[백준] 10820번 문자열 분석 Java 문제 풀이

2022. 2. 4. 08:35알고리즘/백준

728x90
반응형

 

문제풀이

import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

interface Main{
    static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String regex = "([a-z])|([A-Z])|([\\d])|([ ])";
        String str = "";
        Matcher matcher;
        while((str = br.readLine()) != null) {
          int a = 0, b = 0, c = 0, d = 0;
          matcher = Pattern.compile(regex).matcher(str);
          while(matcher.find()) {
            if(matcher.group(1) != null) a++;
            if(matcher.group(2) != null) b++;
            if(matcher.group(3) != null) c++;
            if(matcher.group(4) != null) d++;
          }
          bw.write(a + " " + b + " " + c + " " + d + "\n");
        }
        
        bw.flush(); 
      }
}

입력받은 문자열을 분석해서 소문자, 대문자, 숫자, 공백 개수를 각각 순서대로 출력해야 합니다.

 

정규식에 소괄호 여러 개 놓으면 Matcher.group(int)으로 정규식에 매칭된 단어를 뽑아낼 수 있습니다.

 

각각 null이 아니면 값을 세서 마지막에 출력시켜 줍니다.

 

출처 : https://www.acmicpc.net/problem/10820

 

10820번: 문자열 분석

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

www.acmicpc.net

 

728x90
반응형