공부하기/백준

[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();
}
}
}