문제 : https://www.acmicpc.net/problem/10823

풀이방법


이 문제는 BOJ 10822 문제와 비슷하지만 살짝 다릅니다. 다른 부분은 이 문제에서는 EOF까지 입력을 받아야 한다는 점입니다. EOF란 End of File의 약자로서 파일의 끝이라는 의미를 가지고 있습니다. 즉, 파일의 끝까지 입력을 받으라고 해석할 수 있으며, 다시 말하면 입력이 끝날 때까지 계속해서 입력을 받으라는 의미입니다.

그래서 저는 BufferedReader를 이용해서 EOF까지 입력을 받고 입력받은 문자열의 길이만큼 반복문을 돌리면서 검사를 시작했습니다.

콤마(,)가 있는 경우와 없는 경우를 나누었으며, 콤마(,)가 없다면 StringBuilder 객체인 sb에 append 시켜주었으며, 콤마(,)를 만나면 지금까지 sb에 붙은 값들을 sum에 더해주고 StringBuilder 객체를 다시 새롭게 할당해줍니다. 다시 새롭게 할당하지 않고, 원래 객체에 이어 붙이게 되면 문자열 형태로 뒤에 붙기 때문에 새롭게 할당해주어야 합니다.

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
import java.io.*;
import java.util.Scanner;

public class BOJ10823 {
public static void main(String[] args) throws IOException {

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));


StringBuilder sb= new StringBuilder();
int sum=0;
while(true){
String input = bf.readLine();
if(input == null) break;

for(int i=0;i<input.length();i++){
if(input.charAt(i) == ','){
sum+=Integer.parseInt(sb.toString());
sb = new StringBuilder(); // 초기화
}else {
sb.append(input.charAt(i));
}
}
}
bw.write(sum+Integer.parseInt(sb.toString())+"\n");
bw.flush();
bw.close();
bf.close();
}
}