COS Pro(Coding Specialist Professional) 는 YBM IT에서 시행하는 프로그래밍 자격 시험이다. 3가지 유형으로 이루어진 문제 10개를 90분간 풀어야 한다. 필자는 PS에 자주 사용하던 C++로 응시했다. 하루밖에 준비를 못해서 불안하기도 했지만 운좋게도 만점을 받을 수 있었다.
만점도 받은 김에 후기와 팁을 남겨보려고 한다. 물론 엄청난 것은 아니지만 COS Pro 준비를 시작하는 분들께 도움이 되었으면 한다.
코드의 흐름 파악 능력을 시험하는 문제가 많았다. 문제는 다음의 세가지 유형으로 이루어진다.
- 빈 칸 채우기
- 한 줄 바꾸기
- 함수 작성
처음엔 빈 칸 채우기 한 문제를 풀 때도 10분 정도가 걸렸는데 요령이 생긴 뒤로는 길어도 5분이면 풀 수 있었다. 물론 코드를 읽는 훈련을 꾸준히 해왔기에 가능한 일이었다.
함수 작성 문제는 알맞은 답을 찾아내는 코드를 작성하는 문제이다. 난이도는 Solved.ac 기준 실버 티어 정도다. BFS와 스택/큐 자료 구조가 자주 나온다. 여러 문제를 풀면서 동일한 로직이 반복됨을 느꼈다. 대표적으로 격자 위에서 4방향 또는 8방향으로 BFS를 진행하는 문제가 있다. 물론 시험에서는 세부 내용이 많이 달라지긴 했지만 큰 흐름과 주요 라이브러리들을 익혀둠으로써 빠르게 해결할 수 있었다.
'Coding Specialist Professional'이라는 무시무시한 이름과는 다르게 프로그래밍 능력의 기초가 얼마나 탄탄한지 확인하는 시험 같았다. 합불 여부를 떠나서 자신의 기초 능력을 점검할 수 있었다는 점에서 만족한다.
다시 말하지만 그리 대단한 팁은 아니다. 준비하다보면 누구나 자연스레 알게 되는 것들이다.
- 빈 칸 채우기 - 반환형
- 빈 칸 채우기 - 상속
- 함수 작성 - 손에 익히기
빈칸 채우기 문제에서 가장 중요한 부분은 적절한 위치에 적절한 함수를 호출하는 것이다. 이때 함수의 반환형을 주의 깊게 살펴보길 바란다. 예를 들어 다음의 세가지 함수가 있다고 하자.
int func_a(vector<int> arr);
vector<int> func_b(vector<int> arr);
bool func_c(int number);
그리고 아래처럼 빈 칸(@로 표시)이 주어졌다.
if(func_@(@)) {
vector<int> left = func_@(@);
}
함수의 몸체를 모르지만 반환형을 통해 빈 칸을 c와 b로 특정할 수 있다. 스도쿠를 맞출 때 맞춰진 칸이 많을 수록 다른 칸도 맞추기 쉬워졌던 경험이 있을 것이다. 이 방법으로 빈 칸 1~2개를 채우고 나면 훨씬 쉽게 문제를 풀 수 있다.
(파이썬은...... 유감이다...)
사실 팁이랄 것도 없다. 상속에 대한 문제가 꼭 하나씩 나오는데, 상속을 명시하는 부분을 채워 넣고 새로운 멤버 함수를 정의하는 게 끝이다. 다만 기반 클래스 생성자 호출, 참조에 의한 전달 등 실수하기 쉬운 부분이 있으니 기출을 통해 유형을 익혀두자.
위에서 말했듯이 함수 작성 유형에는 비슷한 문제가 자주 출제된다. 관련 라이브러리의 레퍼런스를 통해 자주 사용하는 함수를 기억해두길 바란다. 특히 BFS 구현 방법과 큐/스택은 꼭 기억해 두자. 문제를 풀어본 경험이 적다면 당연히 여러번 작성해보며 손에 익혀야 한다.
열심히 노력하면 돈과 명예는 자연히 따라온다는 글귀를 어디선가 본 적이 있다. 필자는 실력과 자격증의 관계도 이와 다르지 않다고 생각한다. 편법들에 의지하기보다 자신의 능력을 키우고 시험하기 위한 과정이 되어야 한다. 이 글을 읽는 모든 분이 원하는 것을 얻길 바라며 이만 마치겠다.
궁금한 점이 있어 덧글 남깁니다. 혹시 문제를 풀 때 따로 필기가 가능한 용지를 받을까요?