Backjoon Online Judge에는 문제를 단계별로 풀어볼 수 있다.
각 단계별로 수록된 문제 수는 다르지만, 각 단계마다 기억해두어야할 점을 기록하고자 한다.
입력
일반적으로 키보드 입력을 받는 경우 Scanner 또는 BufferedReader를 활용하며 구현 코드는 아래와 같다.
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
//추가적으로 구분자를 이용해 파싱해야 하는 경우가 있다면
StringTokenizer st = new StringTokenizer(targetString,delim="");
위와 같이 입력을 받을 수 있으며 기본적으로 문자열의 형태로 입력받으므로 상황에 따라 형변환 후 처리하면 된다.
입력량이 많은 경우에는 BufferedReader가 시간을 줄일 수 있다.
readLine()의 경우 IOException이 발생할 수 있으므로 선언부에서 throws 하는 편이다.
출력
출력의 경우 System.out.println을 사용하고,
문자열간 덧셈은 새로운 문자열을 생성하는 오버헤드가 있기 때문에,
여러 값을 하나의 문자열로 만드는 경우에는 StringBuilder를 활용하자.
StringBuilder sb = new StringBuilder();
sb.append(str).append(str);
System.out.println(sb.toString());
산술 연산시에는 타입의 표현범위에 주의하자
알고리즘 문제의 입력 조건에는 대다수 범위를 준다.이를 활용해서 값을 담을 변수의 타입을 결정한다.
다만, 연산과정에서 Overflow,UnderFlow가 발생할 수 있으므로 주의깊게 읽자.
묵시적 형변환과 명시적 형변환
일반적으로 표현범위가 큰쪽으로는 따로 형변환 연산자를 표기하지 않아도 되지만
그 반대의 경우에는 명시적으로 형변환 연산자를 표기해야한다. 이 경우 값의 손실이 발생할 수 있음에 유의하자.
Escape Sequence
출력을 하다보면 ", \, 탭, 줄바꿈 등 일반적인 방식으로 문자열에 포함하는 것이 어려운 값들이 존재한다.
이를 Escape Sequence로 정의해 두었으며 그 값들 중 일부는 다음과 같다.
\n : 개행,
\t : 탭,
\r : 캐리지리턴,
\\ : \
\" : "
%% : %