import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int i=1; i<=T; i++){
int A = sc.nextInt();
int B = sc.nextInt();
System.out.println("Case #" + i + ": " + (A + B));
}
sc.close();
}
}
※ 숫자 A와 B를 더할 때, 문자열로 취급되어서 이어진 결과가 출력되지 않도록 괄호를 사용하여 연산의 우선순위를 명시해야 함!
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i=1; i<=T; i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
System.out.println("Case #" + i + ": " + (A + B));
}
br.close();
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i=1; i<=T; i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
sb.append("Case #").append(i).append(": ").append(A + B).append("\n");
//sb.append("Case #" + i + ": " + (A + B) + "\n");
}
System.out.print(sb);
br.close();
}
}
💡 append 메서드를 분리하여 사용 시 성능이 더 좋아짐, 출력할 문자에 여러 타입이 섞여 있으면 일일이 타입 검사를 실시하므로 시간이 더 걸릴 수밖에 없음
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
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 T = Integer.parseInt(br.readLine());
for(int i=1; i<=T; i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
bw.write("Case #" + i + ": " + (A + B) + "\n");
}
br.close();
bw.flush();
bw.close();
}
}
※ 속도 비교
BufferedReader + StringBuilder(124ms) < BufferedReader 단독(160ms) < BufferedReader + BufferedWriter(164ms) < Scanner(264ms)
💡 결과값을 하나의 객체에 담아 한번에 출력
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n");
const T = Number(input[0]);
let str = "";
for(let i=1; i<=T; i++){
const [A, B] = input[i].split(" ").map(Number);
str += "Case #" + i + ": " + (A + B) + "\n";
}
console.log(str);
💡 console.log() 반복 호출
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n");
const T = Number(input[0]);
for(let i=1; i<=T; i++){
const [A, B] = input[i].split(" ").map(Number);
console.log("Case #" + i + ": " + (A + B));
}
💡 벡틱 사용
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n");
const T = Number(input[0]);
for(let i=1; i<=T; i++){
const [A, B] = input[i].split(" ").map(Number);
console.log(`Case #${i}: ${A+B}`);
}
T = int(input())
for i in range(1, T+1):
A, B = map(int, input().split())
print("Case #", i, ": ", A+B, sep="")