728x90
반응형
https://www.acmicpc.net/problem/10820
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
29
30
31
32
33
34
35
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
while ((input = br.readLine()) != null) {
int capital = 0;
int small = 0;
int num = 0;
int space = 0;
int len = input.length();
for (int i = 0; i < len; i++) {
if (65 <= input.charAt(i) && input.charAt(i) <= 90) {
capital++;
} else if (97 <= input.charAt(i) && input.charAt(i) <= 122) {
small++;
} else if (48 <= input.charAt(i) && input.charAt(i) <= 57) {
num++;
} else if (input.charAt(i) == 32) {
space++;
}
}
System.out.println(small + " " + capital + " " + num + " " + space);
}
}
}
|
cs |
EOF 처리
10820번 문제같은 경우는 문자열이 n개 주어진다고 정수가 주어지지 않았다. 즉, 끝이 주어지지 않았는데
이럴때는 EOF를 사용해야한다!
End Of File의 약자로, 더이상 읽을 데이터가 없음을 나타내는 용어이다. 위 문제처럼 입력값이 정해져있지 않으면 EOF를 사용한다 .
BufferReader를 쓰는 경우
BufferReader bf=new BufferReader(new InputStreamReader(System.in));
String input;
while((input=br.readLine())!=null){
}
Scanner를 쓰는 경우
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
}
나는 처음에 EOF를 잘몰라서 StringTokenizer의 hasMoreTokens를 이용했는데 이걸로 EOF를 처리할 수 없다.
이는 문자열을 입력하는 것이 아닌 입력받은 문자열을 가공하는 역할을 한다.
<참고 사이트>
https://www-swpro-com.tistory.com/53
https://steady-coding.tistory.com/227
https://cheerant.tistory.com/45
728x90
반응형
'알고리즘 > 문자열 처리, 기타 자료구조' 카테고리의 다른 글
[java 백준] 실버 4/ 11656번 접미사 배열 (0) | 2021.08.28 |
---|---|
[java 백준] 브론즈 3/ 10824번 네 수 (0) | 2021.08.27 |
[java 백준] 브론즈 1/ 11655번 ROT13 (0) | 2021.08.27 |
[java 백준] 브론즈 2/ 10809번 알파벳찾기 (0) | 2021.08.25 |
[java 백준] 브론즈 2/ 10808번 알파벳 개수 (0) | 2021.08.24 |
댓글