본문 바로가기
알고리즘/문자열 처리, 기타 자료구조

[java 백준]브론즈 2/10820번 문자열 분석

by Meaning_ 2021. 8. 25.
728x90
반응형

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

 

10820번: 문자열 분석

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

www.acmicpc.net

 

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

 

JAVA System.in에서의 EOF(End of File) 컨트롤

저번 글에서 BufferdReader와 Scaner에 대해서 정리했었는데, 알고리즘 문제풀이에서 주로 사용하기 때문에 정리했었다. 그런데 알고리즘 문제 풀이중에서 종종 input종료 조건에 대한 지문이 없는경

www-swpro-com.tistory.com

 

 

https://steady-coding.tistory.com/227

 

EOF의 사용 방법을 알아보자 (JAVA)

안녕하세요? 코딩중독입니다. 저번 시간에는 입출력의 속도를 빠르게 해 주는 BufferedReader와 BufferedWriter에 대해 알아보았습니다. 이번에는 EOF가 무엇인지 알아봅시다. EOF는 무엇일까? EOF는 End of F

steady-coding.tistory.com

https://cheerant.tistory.com/45

 

Java EOF 처리

[백준 4949 문제를 풀면서 알게된 사실] 4949는 데이터를 입력할 때, 몇개를 입력할 것인지 입력부분에 대한 기준이 없었다. 계속해서 런타임에러가 나고, 결국 프로그램이 종료가 되지 않는 것이

cheerant.tistory.com

 

728x90
반응형

댓글