프로 준비법

기술노트

프로 준비법


Professional 시험 주요 특징
  • 4시간동안 1문제를 푼다.
  • 언어는 `c, cpp, java`로 가능하다.
  • 라이브러리를 사용할 수 없으며, 직접 자료구조를 구현해야한다. (`malloc.h`만 가능)
  • 전체적인 로직은 구현이 되어있는 상태이며, 사용자가 구현해야 할 메소드 부분이 빈칸으로 제공된다. (`main.cpp`와 `user.cpp`가 주어지며, 우리는 `user.cpp`를 구현하면 된다)
  • 시험 유형 2가지
 - 1) 내부 테스트케이스를 제한 메모리, 시간 내에 해결해야한다. (50개 3초, 메모리 256MB 이내)
 - 2) 주어진 쿼리 함수를 최소한으로 호출하여 문제를 해결해야 한다.
  • 주로 샘플 테스트케이스는 5개가 주어지며, 이를 활용해 디버깅을 해볼 수 있다.
  • 시험장에서는 Reference Code가 주어지며 사용할 수 있다. (자료구조, 알고리즘)


핵심 자료구조
  • Queue, Stack
  • Sort
  • Linked List
  • Hash
  • Heap
  • Binary Search


학습 시작

---

1) Visual Studio 설정하기

1. Visual C++ 빈 프로젝트 생성

2. `user.cpp`와 `main.cpp` 생성

3. 프로젝트명 오른쪽 마우스 클릭 → 속성

4. `C/C++`에서 SDL 검사 아니요로 변경

  > 디버깅할 때 scanf나 printf를 사용하기 위함

5. `링커/시스템`에서 맨위 `하위 시스템`이 공란이면 `콘솔(/SUBSYSTEM:CONSOLE)`로 설정

  > 공란이면 run할 때 콘솔창이 켜있는 상태로 유지가 되지 않음 (반드시 설정)


2) cpp로 프로 문제 풀 때 알아야 할 것
  • printf로 출력 확인해보기 위한 라이브러리 : `#include <stdio.h>`. 제출시에는 꼭 지우기
  • 구조체 : `struct`
  • 포인터 : 주소값 활용
  • 문자열
 > 문자열의 맨 마지막에는 항상 `'\0'`로 끝나야한다.
 - 문자열 복사 (a에 b를 복사)
cpp
    char a[5];
    char b[5] = {'a', 'b', 'c', 'd', '\0'};
    
    void strcopy(char ''a, char ''b) {
        while(''a++ = ''b++);
    }
    
    int main(void) {
        strcopy(a, b); // a 배열에 b의 'abcd'가 저장됌
    }
 - 문자열 비교
cpp
    char a[5] = {'b', 'b', 'c', 'd', '\0'};
    char b[5] = {'a', 'b', 'c', 'd', '\0'};
    
    int strcompare(char ''a, char ''b) {
        int i;
        for(i = 0; a[i] && a[i] == b[i]; ++i);
        
        return a[i] - b[i];
    }
    
    int main(void) {
        int res = strcompare(a, b); // a가 b보다 작으면 음수, 크면 양수, 같으면 0
    }
 - 문자열 초기화
   > 특수히 중간에 초기화가 필요할 때만 사용
cpp
    void strnull(char *a) {
        *a = 0;
    }