
Scanner는 간단한 입력을 다룰 때 사용하고, BufferedReader는 대용량의 데이터를 빠르게 읽거나 성능이 중요할 떄 사용한다.

print() 문자를 그대로 출력 & 개행 불포함, printf() 형식을 신경써야할 때, println() 문자를 그대로 출력 & 개행 포함

Overflow란 type이 허용하는 최댓값을 벗어나는 것을 의미한다. 컴파일러가 overflow를 무시하기 때문에 잘못된 값이 저장되는 문제가 발생한다.

상속 관계에 있는 부모와 자식 클래스 간의 형변환 1. 업캐스팅 : 자식 -> 부모 2. 다운캐스팅 : 부모 -> 자식

난수(예측 불가능한 수)를 생성하는 대표적인 2가지 방법: Math.random과 java.util.Random

정적 메서드란 상태를 가지고 있지 않은 단순히 메소드만 가진 구조를 말한다.

JVM내에서 인스턴스가 오직 1개만 생성되어야 하는 디자인 패턴.

Java에서 사용자 정의 예외를 처리할 때, Exception과 RuntimeException을 상속하여 구현하는 방법

‘이것보다 더 효율적인 문제 해결 방법이 없을까?’

가능한 모든 경우를 다 해보는 것!

입력 데이터의 범위가 제한적일 때, 각 데이터의 출현 빈도를 계산하여 정렬하는 정수형 데이터 정렬 알고리즘

DFS, BFS, DP, Backtracking

그래프의 최단 경로를 구하는 알고리즘, 모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구한다.

출발 노드에서 다른 모든 노드로 가는 최단 경로를 찾는 알고리즘

재귀함수에서 int 타입의 매개변수가 갱신이 안되는 문제 발생=> 가변 객체를 사용하여 해결 가능!

int와 long의 범위를 넘는 수를 다뤄야할 때 BigInteger 사용

1 : 입력되는 테스트케이스의 수를 모를 때 Scanner BufferedReader