https://www.acmicpc.net/problem/11021
문제
풀이
👉 BufferedReader + StringTokenizer + StringBuilder 을 이용한 방법
참고로 append 를 한 번에 적어줘도 된다.
sb.append("Case #"+ i + ": " + (Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())) + "\n" );
근데 아래 코드처럼 나눠서 쓰는 이유는 직접 테스트해보면 알겠지만 저렇게 출력할 문자에 여러 타입이 섞여있으면 해당 메소드는 일일이 타입 검사를 해주어야 하기 때문에 시간이 미약하게나마 더 걸리게 된다는 것이다. 물론 성능에 신경 안 쓴다면 하나로 합쳐서 써도 무방하다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer str;
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
for (int i=1; i<=n; i++) {
str = new StringTokenizer(br.readLine(), " ");
sb.append("Case #").append(i).append(": ")
.append(Integer.parseInt(str.nextToken())
+Integer.parseInt(str.nextToken())).append("\n");
}
br.close();
System.out.print(sb);
}
}
👉 BufferedReader + StringTokenizer + BufferedWriter 을 이용한 방법
BufferedWriter.write() 메소드는 단독으로 int 형 값만 넣을 경우 이는 아스키코드값으로 인식되기 때문에 다른 문자가 나와버린다. 그러니 이를 방지하고 싶다면 반드시 문자열과 int 형을 함께 넣어줘야 int 값을 제대로 출력할 수 있다.
import java.io.*;
import java.util.StringTokenizer;
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));
int a = Integer.parseInt(br.readLine());
StringTokenizer str;
for (int i = 1; i <= a; i++) {
str = new StringTokenizer(br.readLine()," ");
bw.write("Case #"+i+": "); // 버퍼에 쓰기
bw.write(Integer.parseInt(str.nextToken())
+Integer.parseInt(str.nextToken())+"\n");
}
br.close();
bw.flush(); // 버퍼 비우기(버퍼에 저장된 데이터는 출력)
bw.close();
}
}
👉 BufferedReader + String.charAt() + StringBuilder 을 이용한 방법
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= a; i++) {
String str = br.readLine();
sb.append("Case #").append(i).append(": ")
.append(str.charAt(0)-'0'+str.charAt(2)-'0').append('\n');
}
System.out.println(sb);
}
}
위 방법에 자세한 설명은 앞서 포스팅에서도 언급했으니 아래 링크의 포스팅을 보면 된다.
실행 결과