공부하기/백준

[Java] 백준 풀기 10820 - 문자열 분석

XEV 2023. 8. 22. 23:45

자바 백준 10820번

브론즈 2

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

 

10820번: 문자열 분석

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

입력이 없을때 까지 문자열을 input에 입력받는다. 입력받은 문자열을 toCharArray()를 이용하여 각각의 문자를 array에 저장한 후 하나씩 빼내어 소문자, 대문자, 숫자 그리고 공백을 다음 메서드를 사용하여 카운트 한다.

    소문자: Character.isLowerCase()

    대문자: Character.isUpperCase()

    숫자: Character.isDigit()

    공백: Character.isWhitespace()

각각 카운트한 결과를 출력한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

class StringAnalyzer {
    private String input;
    private int lowerCaseCount;
    private int upperCaseCount;
    private int digitCount;
    private int spaceCount;
    
    // constuctor: 입력 문자열을 받아 필드 초기화
    public StringAnalyzer(String input) {
        this.input = input;
        lowerCaseCount = 0;
        upperCaseCount = 0;
        digitCount = 0;
        spaceCount = 0;
    }
    
    // 문자열을 분석하여 각 카운트 변수를 증가시킴
    public void analyze() {
        for (char c : input.toCharArray()) {
            if (Character.isLowerCase(c)) {
                lowerCaseCount++;
            } else if (Character.isUpperCase(c)) {
                upperCaseCount++;
            } else if (Character.isDigit(c)) {
                digitCount++;
            } else if (Character.isWhitespace(c)) {
                spaceCount++;
            }
        }
    }
    
    // 분석 결과를 출력
    public void printAnalysis() {
        System.out.println(lowerCaseCount + " " + upperCaseCount + " " + digitCount + " " + spaceCount);
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 입력이 없을 때까지 반복
        while (sc.hasNextLine()) {
            // 입력 문자열 받음
            String input = sc.nextLine();
            
            // 문자열 분석을 위한 객체 생성
            StringAnalyzer analyzer = new StringAnalyzer(input);
            
            // 문자열 분석 수행
            analyzer.analyze();
            
            // 분석 결과 출력
            analyzer.printAnalysis();
        }
    }
}