일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- scanner
- 정보처리기사
- sql문
- github
- 백준
- order by
- 예외처리
- 프로그래머스 sql 고득점 kit
- 메서드
- JavaScript
- String클래스
- 프로그래밍
- 웹개발
- Git
- 정보처리기사필기요약
- 형변환
- BufferedReader
- 프론트엔드
- html
- 프로그래머스 SQL
- select문
- MySQL
- mybatis
- 클래스
- 자바
- 리눅스
- SQL
- 개발자
- 자바스크립트
- DML
- select
- 스프링
- StringBuilder
- Linux
- 데이터 조회
- where
- 알고리즘
- 백엔드
- 입출력
- Today
- Total
ToBe끝판왕
[ 알고리즘 ] 백준 15552번 문제 - 자바( JAVA ) 본문
주의사항
※ 백준에서 정해진 출력 형식을 출력해야 한다.
※ 백준 알고리즘에서는 클래스명을 Main으로 해주어야 한다.
백준 15552번 문제
백준 알고리즘의 단계별 문제 풀기
3단계 < 반복문 >
▶ 해당 문제 링크
https://www.acmicpc.net/problem/15552
코딩 하기
1) BufferedWriter 사용
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
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() );
StringTokenizer st;
for( int i=0; i<T; i++ ) {
st = new StringTokenizer( br.readLine(), " " );
bw.write( ( Integer.parseInt( st.nextToken() ) + Integer.parseInt( st.nextToken() ) ) + "\n" );
}
br.close();
bw.flush();
bw.close();
}
}
2) StringBuilder 사용
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 ) );
int T = Integer.parseInt( br.readLine() );
StringTokenizer st;
StringBuilder sb = new StringBuilder();
for ( int i=0; i<T; i++ ) {
st = new StringTokenizer( br.readLine() , " " );
sb.append( Integer.parseInt( st.nextToken() ) + Integer.parseInt( st.nextToken() ) ).append( '\n' );
}
br.close();
System.out.println( sb );
}
}
문제 해결
문제를 보면 최대 100만개의 테스트 케이스가 주어진다.
케이스가 늘어나면 System.out.println( ) 의 호출횟수 또한 증가한다. 그래서 아무리 BufferedReader를 쓰더라도 System.out.println( ) 을 각 테스트 케이스마다 사용하면 시간이 초과되게 된다.
※ 주의사항
• 시간제한은 1.5초 ( 1500ms 이하여야 한다. )
• Scanner 대신 BufferedReader 클래스를 사용한다.
1) BufferedWriter 사용
System.out.println( ) 을 사용하면 시간이 초과되기 때문에, BufferedWriter를 사용하여 버퍼에 담아둔 후
한번에 출력을 하게 만든다. ( 많은 양의 출력이 필요하게 되는 경우 성능면에서 더 뛰어나다. )
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( System.out ) );
• 테스트 케이스에서 주어지는 두 정수는 문자열 분리를 위해 매 반복마다 StringTokenizer을 생성과 동시에 문자를 입력받고
반환되는 String 타입을 Integer.parseInt를 통해 int형으로 형변환 해준다.
• write( ) 메서드를 사용하여 두 토큰을 더해준 출력할 내용을 담고 flush( ) 메서드로 버퍼를 비워내는 동시에 출력을 한다.
( 반드시 flush( ) 메서드를 써주어야 한다. ) 후처리를 위해 close( ) 메서드를 통해 스트림을 닫는다.
• System.out.println( ) 메서드와 달리 자동개행 기능이 없기 때문에 "\n"을 통해 처리해준다.
for( int i=0; i<T; i++ ) {
st = new StringTokenizer( br.readLine(), " " );
bw.write( ( Integer.parseInt( st.nextToken() ) + Integer.parseInt( st.nextToken() ) ) + "\n" );
}
br.close();
bw.flush();
bw.close();
}
2) StringBuilder 사용
• StringBuilder 클래스로 하나의 문자열로 계속 연결시킨 후, 가장 마지막에 연결된 문자열을 출력한다.
• append( ) 메서드를 사용해 문자열을 쉽게 추가할 수 있다.
StringTokenizer st;
StringBuilder sb = new StringBuilder();
for ( int i=0; i<T; i++ ) {
st = new StringTokenizer( br.readLine() , " " );
sb.append( Integer.parseInt( st.nextToken() ) + Integer.parseInt( st.nextToken() ) ).append( '\n' );
}
br.close();
System.out.println( sb );
}
'■ 알고리즘 > 백준 JAVA' 카테고리의 다른 글
[ 알고리즘 ] 백준 11021번 문제 - 자바( JAVA ) (0) | 2022.05.26 |
---|---|
[ 알고리즘 ] 백준 2741번 문제 - 자바( JAVA ) (0) | 2022.05.25 |
[ 알고리즘 ] 백준 10950번 문제 - 자바( JAVA ) (0) | 2022.05.24 |
[ 알고리즘 ] 백준 2739번 문제 - 자바( JAVA ) (0) | 2022.05.24 |
[ 알고리즘 ] 백준 2480번 문제 - 자바( JAVA ) (0) | 2022.05.24 |