패스트캠퍼스 핵심유형 20개로 한 번에 끝내는 알고리즘 코딩테스트 with Java 강의

Part1 - 4 기본강의, Part5 - 단기완성, Part6 - SQL코테Part5 단기완성 강의를 정리한 내용


목차

  1. 완전탐색(브루트포스)
  2. 정렬

좋은 습관


  1. 문제를 올바른 순서로 이해하자.
    • 읽기
      • 시간, 메모리 제한
      • 문제 전체를 반드시 꼼꼼하게
    • 이해하기
      • 제공되는 정보(변수들) 정리
      • 예제 데이터에 대한 이해
    • 파악하기
      • 가능한 최대, 최소 정답에 맞는 데이터를 직접 생성
      • 키워드가 되는 단어들을 체크

  1. 시간공간 복잡도를 계산하자.
    • 시간을 아끼기 위해서. “짤 가치가 있나?”
    • 예를 들어, N이 10만이라면, O(N2) = 100억이다. 이건 이중 for문으로 짜봤자 안되는 것을 알 수 있겠지. O(N log N)은 대략 180만이니까 가능하겠지?

  1. 코드를 효율적으로 함수화해서 구현하자.
    • 예를 들어, 다익스트라 20줄짜리를 3번 구현하면 60줄 짜야하겠지? 함수화해서 불러서 쓰면 훨씬 단축될 것.

  1. 코딩테스트에서 부분 점수를 챙기자.
    • 노력이라도 한 모습을 보이면 부분 점수를 받는다.

입력 메서드

  • 호석님은 입력 메서드 관련하여 일단 넣고 시작하시는 코드가 있다고 하셨다.
import java.util.*;  
import java.io.*;  
  
public class Main {  
    static StringBuilder sb = new StringBuilder();  
    //정답은 sb에 append 를 사용하여 출력  
    //만약 개행까지 출력하고 싶으면 append('\n')을 추가  
  
    static void input(){  
        FastReader scan = new FastReader();  
    }  
  
    public static void main(String[] args) {  
        input();  
    }  
  
    static class FastReader {  
        BufferedReader br;  
        StringTokenizer st;  
  
        public FastReader() {  
            br = new BufferedReader(new InputStreamReader(System.in));  
        }  
  
        public FastReader(String s) throws FileNotFoundException {  
            br = new BufferedReader(new FileReader(new File(s)));  
        }  
  
        String next() {  
            while (st == null || !st.hasMoreElements()) {  
                try {  
                    st = new StringTokenizer(br.readLine());  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
            return st.nextToken();  
        }  
  
        int nextInt() {  
            return Integer.parseInt(next());  
        }  
  
        long nextLong() {  
            return Long.parseLong(next());  
        }  
  
        double nextDouble() {  
            return Double.parseDouble(next());  
        }  
  
        String nextLine() {  
            String str = "";  
            try {  
                str = br.readLine();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
            return str;  
        }  
    }  
}