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

더보기

그냥 제출했더니 NullPointerError가 떴다
찾아본 결과 이 문제가 의도한 것은 EOF 인 것 같다.
End Of File
입력의 끝이 어디인지 주어지지 않는다.
그 끝을 판단하는 것을 코드로 짤 수 있는지 묻는 문제다.

문제 간단설명)
입력받은 문자열에서 소문자, 대문자, 숫자, 공백 개수 구하기
+EOF (End Of File)
풀이)
소문자, 대문자, 숫자, 공백 개수가 들어갈 정수 배열을 만든다.
각 상황에 맞게 배열 값을 +1 한다.
이 문제의 핵심은 입력이 끝인지 아닌지를 판단하는 것이다.
readLine()은 더 이상의 입력 값이 없다면 null값을 반환하는데,
이를 이용한다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input;
while((input = br.readLine()) != null){
int[] cnt = new int[4];
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if('a' <= ch && ch <= 'z') cnt[0]++;
else if('A' <= ch && ch <= 'Z') cnt[1]++;
else if('0' <= ch && ch <= '9') cnt[2]++;
else if(ch == ' ') cnt[3]++;
}
for (int i : cnt) {
bw.write(i + " ");
}
bw.write("\n");
bw.flush();
}
bw.close();
}
}
|
cs |
'알고리즘 > 백준' 카테고리의 다른 글
| 백준 11655 ROT13 자바[java] (0) | 2023.01.07 |
|---|---|
| 백준 2743 단어 길이 재기 자바[java] (0) | 2023.01.07 |
| 백준 10809 알파벳 찾기 자바[java] (0) | 2023.01.07 |
| 백준 10808 알파벳 개수 자바[java] (0) | 2023.01.07 |
| 백준 1918 후위표기식 자바[java] (0) | 2023.01.06 |