- 22-01-10 푼 문제 수 : 14개
아래는 백준에 명시된 내용이다.
본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다. 또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.
- 백준 15552번 빠른 A+B : 자바 입출력 스트림
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(in.readLine());
for(int i=0; i<T; i++) {
String line = in.readLine();
StringTokenizer st = new StringTokenizer(line);
int num = 0;
while(st.hasMoreTokens()) {
num += Integer.parseInt(st.nextToken());
}
out.write(num+"\n");
}
in.close();
out.flush();
out.close();
}
- 백준 11022번 A+B - 8 : EOF
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(in.readLine());
for(int i=1; i<=t; i++) {
String line = in.readLine();
StringTokenizer st = new StringTokenizer(line);
int a=0, b=0;
out.write("Case #"+ i +": ");
while(st.hasMoreTokens()) {
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
}
out.write(a+" + "+b+" = "+(a+b)+"\n");
}
in.close();
out.flush();
out.close();
}
EOF(End of File) : 더 이상 읽을 수 있는 데이터가 없는 것을 의미하는 용어
EOF로 알고리즘을 처리하려면, 다음 라인으로 넘어갔을 때 입력값이 없는 경우를 체크해 프로그램을 종료해야 한다.
커맨드라인을 통해 입력값을 주는 경우, CTRL+Z를 누른 뒤 엔터키를 누르면 입력이 끝난 것으로 처리된다.
- 백준 10951 A+B-4 : StringTokenizer로 문자열 자르기
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
String line = "";
while((line = in.readLine()) != null) {
StringTokenizer st = new StringTokenizer(line);
int a=0, b=0;
while(st.hasMoreTokens()) {
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
}
out.write(a+b+"\n");
}
in.close();
out.flush();
out.close();
}
- 백준 1110번 더하기 사이클
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(in.readLine());
int result=n;
int cnt=0;
do {
int left = result/10;
int right = result%10;
int add = left + right;
result = (right*10) + (add%10);
cnt++;
} while(result != n);
out.write(cnt+"\n");
in.close();
out.flush();
out.close();
}
이 문제는 생각보다 시간이 좀 걸려서.. 넣어봤다.
'PS(Java) > 백준' 카테고리의 다른 글
[PS] 백준 11719번 그대로 출력하기 2 (0) | 2022.01.28 |
---|---|
[PS] 백준 단계별로 풀기 - 10757번 큰 수 A+B (0) | 2022.01.24 |
[PS] 백준 단계별로 풀기 - 배열(2), 함수 (0) | 2022.01.12 |
[PS] 백준 단계별로 풀기 - 1차원 배열 (0) | 2022.01.12 |
[PS] 백준 단계별로 풀기 - 입출력, If문 (0) | 2022.01.10 |