알게된 팁-1
1. 코딩 테스트에서 문제를 보고 로직이 생각나자마자 바로 구현하지 말고 꼼꼼하게 문제의 조건을 파악하고 방향을 설정하자.
2. N 자리의 수를 입력 받을 때, N의 범위가 (1<= N <= 100)이면 int나 long으로 입력받을 수 없다. 이때는 문자열로 받아라.
3. 문자를 숫자형으로 변형하려면 ASCII 코드 값 48 또는 '0'을 빼주어야 한다.
(ex - '1' - 48 = 1)
4. String 값을 toCharArray로 char[] 형으로 변환이 가능하다.
5. 받는 데이터가 많을 때는 Scanner보다 BufferReader가 유리하다고 함.
-> BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine()으로 한 줄씩 받아오기가 가능하다.
6. 숫자가 한 줄에 굉장히 많이 들어올 때 int로 받기 어려우므로 StringTokenizer를 사용한다.
StringTokenizer st = new StringTokenizer(br.readLine()); 이걸로 한줄 씩 받아온것을 Stringtoken화를 한 후 st.nextToken() 이걸로 앞에서 부터 하나씩 받아오면 된다.
(string -> 정수 바꾸고 싶을때는 Integer.parseInt() 사용)
7. 합배열이나 곱배열 다룰 때는 습관적으로 long 배열을 선언해라
8. N의 최댓값이 10,000,000 이라 엄청 크므로 이때는 O(nlong) 시간 복잡도 알고리즘도 위험할 수 있으므 O(n)을 써야한다 이런 경우에 자주 사용하는 방법은 투 포인터임.
(많이 풀다보면 한번쓰면 없어지는 유니크한 경우네 그리고 두개를 뽑아서 값을 만들면 되는구나 -> 투 포인터가 떠오르게 됨)
예시) 투 포인터 이동 원칙
- sum > N : sum = sum - start_index; start_index++;
- sum < N : end_index++; sum = sum + end_index;
- sum == N : end_index++; sum = sum + end_index; count++; (찾은 경우)
9. 자바는 Arrays.sort(A) 이걸 사용해서 간단하게 오름차순 정렬이 가능하다.
10. 문자열 입력받아서 char 배열에 넣기
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
char A[] = new char[S];
A = bf.readLine().toCharArray(); // 문자열 입력받아서 char 배열에 넣는 법