티스토리 뷰
반응형
https://www.acmicpc.net/problem/11723
상기 문제는 바이트 연산에 관한 문제라 "시간 초과" 문제가 발생할 이유가 없다고 생각했는데....
시간초과로 애를 먹었다.
원인은 System.out.println이었다!
흔히 사용하는 System.out.println()는 자바 API로 unbuffered I/O 방식이다.
버퍼없이 바로바로 출력하는 것이 시간초과를 야기시켰던것같다..(문제가 바로 출력인줄 알았지만 아니었다!)
그래서 출력방식을
버퍼 입출력으로 변경하니 바로 정답 처리가 되었다.
Buffer 버퍼란 데이터를 일시적으로 저장하기 위한 메모리인데,
데이터를 버퍼에 모아 두었다가, 버퍼가 꽉 차게 될 때 한 번에 쓰게 하면 시스템의 속도나 효율이 향상된다.
Java에서 버퍼입출력 예시를 보자
1
2
3
4
5
6
7
8
9 |
BufferedOutputStream bout = new BufferedOutputStream(System.out);
bout.write(100);//버퍼에 저장
bout.flush();// bout 스트림의 버퍼에 있는 데이터를 모두 장치에 출력
bout.close();
|
cs |
flush()가 호출되지 않으면 버퍼가 꽉 찰 때까지 출력한 데이터가 화면에 나타나지 않을 수 있다.
반응형
'Language > java' 카테고리의 다른 글
[OCPJP]Java SE 8 Programmer II Certification Exam | 1Z0-809 덤프/DUMP 문제#1~20 (0) | 2021.03.01 |
---|---|
[OCAJP/OCPJP]Java SE 8 Programmer I, II Certification Exam | 1Z0-808 / 1Z0-809 시 (75) | 2020.08.19 |
팩토리얼 (0) | 2018.03.11 |
String java.lang.String.substring(int beginIndex, int endIndex) (0) | 2018.03.08 |
[SecureCoding]e.printstacktrace() 등. 권장하는 예외처리 (0) | 2017.11.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- html
- 퇴사
- script버전
- C++
- c#
- 프론트엔드
- 런타임에러
- 백준퇴사
- 백준
- 백준14501
- C# java 차이점
- 개발중캐시삭제
- 프론트엔드개발자
- 선언적트랜잭션 #noRollbackFor #@Transactional
- html꿀팁
- 캐시삭제
- boj
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함