import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String num;
while ((num = bf.readLine()) != null) {
solve(num);
for (int i = 0; i<arr.length; i++) {
sb.append(arr[i]).append(" ");
}
sb.append('\n');
}
System.out.println(sb);
}
private static int[] solve(String text) {
arr = new int[4];
for (int i = 0; i<text.length(); i++) {
if (text.charAt(i)-0 == 32) {
arr[3]++;
} else if (text.charAt(i)-0 >= 65 && text.charAt(i)-0 <= 90) {
arr[1]++;
} else if (text.charAt(i)-0 >= 97 && text.charAt(i)-0 <= 122) {
arr[0]++;
} else if (text.charAt(i)-0 >= 48 && text.charAt(i)-0 <= 57) {
arr[2]++;
}
}
return arr;
}
}
문자열을 주고 소문자, 대문자, 띄어쓰기, 숫자가 각각 몇개인지 출력하는 문제다.
text.charAt(i)-0
아스키코드를 활용해서 위의 코드가 문자를 숫자로 변환하고 범위를 통해서 판별할 수 있게 된다.
이 문제는 더 이상 입력받지 않으면 자동 종료하는 문제다.
while ((num = bf.readLine()) != null)
위와 같이 해주면 된다.
// 소문자
if (input.charAt(i) >= 'a' && input.charAt(i) <= 'z') {
arr[0] += 1;
}
// 대문자
if (input.charAt(i) >= 'A' && input.charAt(i) <= 'Z') {
arr[1] += 1;
}
// 숫자
if (input.charAt(i) >= '0' && input.charAt(i) <= '9') {
arr[2] += 1;
}
// 공백
if (input.charAt(i) == ' ') {
arr[3] += 1;
}