/CodingTest

코딩테스트 쳇바퀴도는거 같아서 만들어본 기록용 레포지토리입니다.

Primary LanguageJava

CodingTest

코딩테스트 쳇바퀴도는거 같아서 만들어본 기록용 레포지토리입니다.


문제를 접했을 때 Procedure

  1. 문제를 모델링한다.

    1. 문제와 입출력 예제를 읽고 문제를 이해한다.
    2. 문제에 등장하는 변수들을 예상되는 타입자료구조로 미리 적어놓는다.
    3. 어떤 조건을 통과해야 하는지 넘버링해서 적어놓는다.
    4. 사용될만한 알고리즘을 이용해 전반적인 흐름을 그린다.
  2. 풀이 모델이 적절한지 체크한다.

    1. 시간 제한에 걸리지 않는지 확인한다. (Big O)
    2. 데이터의 경곗값을 처리했는지 확인한다. (자료구조의 초기값이나 배열의 인덱스)
    3. 문제에서 제시한 예외를 처리했는지 확인한다. (없는 경우는 -1 출력)
  3. 생각한 모델을 구현한다.

    1. 대소 관계를 철저히 지킨다. (이상, 이하, 초과, 미만)
    2. 구현 도중 예측하지 못한 상황이 발생할 경우 구현을 멈추고 모델링부터 수정한다.
  4. 예측대로 출력되지 않을 경우 출력문을 이용해 디버깅한다.


자료구조 선택 Procedure

  1. 원소의 길이가 가변인가?
    1. Yes: Array
    2. No: List, Set, Map, Queue, Stack, Priority Queue
  2. 순서를 고려해야 하는가?
    1. Yes: List, Queue, Stack, Priority Queue
    2. No: Set, Map
  3. 페어로 저장해야 하는가?
    1. Yes: Map
    2. No: Set
  4. 원소를 찾는 로직이 어떤 것인가?
    1. Index: List
    2. FIFO: Queue
    3. FILO: Stack
    4. Priority: Priority Queue