프로 준비법
기술노트
프로 준비법
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;
}