흥!
후...
[백준] 9024 - 두 수의 합
문제 자체는 그렇게 어려운 수준이 아니다.
근데...

자꾸 메모리 초과가 발생한다.
저건 Java 8로 제출한 상태.
Java 11로 제출을 해 보니...

꾸역꾸역 통과가 됐다.
근데 제출한 목록을 보니까

??????
메모리와 시간이 엄청나게 줄었다.
입력을 초고속으로 읽어들이기 위해 직접 만든 "커스텀 InputReader"
static class InputReader {
public byte[] buf;
public int buf_p, size;
public InputReader() {
buf = new byte[1 << 24];
buf_read();
}
public int nextInt() {
if (buf_p == size) buf_read();
if (size == -1) return -1;
int i = 0;
boolean negative = false;
if (buf[buf_p] == '-') {
negative = true;
if (++buf_p == size) buf_read();
}
while (true) {
if (buf[buf_p] < 48 || buf[buf_p] > 57) {
buf_p++;
return negative ? -i : i;
}
i = 10 * i + buf[buf_p++] - 48;
if (buf_p == size) buf_read();
}
}
private void buf_read() {
try {
size = System.in.read(buf);
buf_p = 0;
} catch (IOException e) {
e.printStackTrace();
}
}
}
buf = new byte[1 << 24];
• 16MB 크기의 Byte 배열 (1 << 24 = 16,777,216)
size = System.in.read(buf);
buf_p = 0;
• 한 번에 표준 입력(System.in) 을 버퍼에 통째로 읽어옴.
• size = 읽은 바이트 수
• buf_p = 현재 읽고 있는 포인터 위치 (인덱스)
• 버퍼에서 바이트 하나씩 보면서 숫자로 파싱
• 음수 처리 ('-' 문자 확인)
• '0' ~ '9' 범위 내의 숫자를 차례대로 곱해서 누적
• 숫자 아닌 문자가 오면 하나의 정수를 다 읽었다고 판단 → return
if (size == -1) return -1;

위에가 커스텀 클래스 사용
아래는 어거지로 통과
세상은 똑똑한 사람들이 넘쳐난다....