기록/SSAFYcial

삼성 SW 역량 테스트 B형 취득 후기

gmelon 2024. 3. 24. 23:39

며칠 전 3월 9일 싸피 대전캠퍼스에서 응시했던 삼성 SW 역량 테스트 B형 검정에서 합격했다는 메일을 받았다.

B형 취득이라는 게 크다면 크고 작다면 작은 성과이겠지만, 개인적으로는 의미가 있는 이벤트여서 기록을 해두고 싶었다.
 

삼성 SW 역량 테스트란

먼저 삼성 SW 역량 테스트란 삼성 전자에서 수시로 시행하는 코딩테스트로, 개인적으로 응시하기 위해서는 아래의 SW Expert Academy에서 접수할 수 있는 것으로 알고 있다. 나는 싸피를 이수하고 있기 때문에 싸피에서 단체로 시험을 응시할 수 있었다.

역량 테스트는 A(Advanced), B(Professional), C(Expert) 의 3개 등급으로 구분된다. 전공반의 경우 A/A+형 취득이 2학기로 넘어가기 위한 조건이기에 1학기 수강생들에게 3번의 응시 기회가 주어진다. B형의 경우 A형을 취득한 수강생에 한하여 학기에 3~4번 정도 응시 기회가 주어진다. 한 기수가 천명 정도되는데 그중 60-80명 정도가 B형을 취득하고 수료한다고 알고 있다. (싸피에서는 B형을 취득하면 100만 원의 축하금(?)도 준다.)
 

B형 문제 유형

주어진 문제를 꼼꼼하게 읽고 오류 없이 그대로 코드로 구현해 낼 수 있는지를 묻는 A형과 달리, B형에서는 구현 + 최적화를 요구하는 문제들이 주로 출제된다. 간혹 세그먼트 트리, KMP 등등 알고리즘 자체가 어려운 유형도 출제되는 것 같지만, 특히 최근에는 문제를 주어진 그대로 구현하면 시간 초과가 발생하여 간단한 알고리즘, 자료구조를 적절히 활용해서 시간 복잡도를 개선해야 하는 문제가 출제되는 것 같다. 4시간에 1문제를 풀기 때문에 최초 1-2시간은 설계에 투자하고 1시간 구현, 1시간 디버깅과 같이 시간을 잘 분배해서 문제를 푸는 게 중요하다고 느꼈다.
 

알고리즘..

나는 알고리즘을 정말 싫어했다. 학부 때 어떤 교수님의 알고리즘 수업을 듣게 되었는데, 매 수업시간이 끝날 때마다 자체 코테 플랫폼에 문제를 오픈하고 2시간 내에 풀지 못하면 x점 감점, 당일까지 풀지 못하면 또 y점 감점, 다음 주 수업 전까지 풀지 못하면 z점 감점과 같은 방식으로 실습과 평가가 진행되는 수업이었다. 그전까지 알고리즘이란 걸 제대로 공부해 본 적 없던 나는 계속 당일에 코드를 제출하지 못했다. 결국 새벽에 두 시간 정도 산책하고 집에 들어와서 그 수업을 철회했던 기억이 있다. (그리고 그 다음 해에 다른 교수님 수업을 들었다ㅜ)
 
이때 나는 '아 나는 알고리즘이란 걸 평생 잘할 수 없겠구나'라고 생각했다. 지금 생각해 보면 제대로 공부해보지도 않고 무서워서 도망쳤던 건데 막연하게 나랑은 맞지 않는 분야라고 생각했던 것 같다.
 

스터디 & 싸피

그렇게 학부를 마치고, 취업을 위해 학과 사람들과 미루고 미루던 알고리즘 스터디를 하게 됐다. 다들 알고리즘을 제대로 공부해 본 적이 오래됐거나 처음이라서 아래의 나동빈님 파이썬 코딩테스트 책을 구입해서 커리큘럼을 쭉 따라 진행했다.

그동안 단편적/수동적으로 공부할 때와 달리, 스터디라는 체계와 책에서 제공하는 커리큘럼을 통해 보다 더 정교하게 알고리즘을 학습할 수 있었다. 이때 스택, 큐, 힙과 같이 기본적인 자료구조나 그리디, DP, 그래프 등 코테에 자주 출제되는 알고리즘을 익히게 되었다. 한 6개월 정도 공부하니 그래도 백준 골드 쉬운 문제들을 어떻게 풀 수 있는 실력이 되었다.
 
그러고 나서 올해 싸피에 입과해 한 달간 싸피의 알고리즘 커리큘럼을 이수했다. 아는 내용도 있고 모르는 내용도 있었지만, 검증된 커리큘럼을 통해 학습하니 머릿속에서 내용들이 체계적으로 정리되는 것을 느꼈다. 가장 좋았던 건 아무래도 혼자 공부할 때는 문제 풀이에 시간을 많이 투자하기가 쉽지 않은데 싸피에서는 9-6로 다 같이 주어진 문제들을 풀게 된다는 점이다. 이 과정에서 구현 역량이 엄청 느는 것을 느꼈다. 그 결과 2학기를 위한 A형과 B형을 차례로 취득할 수 있었다.
 
나에게 B형 취득이 의미 있었던 이유는, 이건 절대로 못할 거라고 생각했던 것을 적절한 방향과 방법으로 노력한 결과 이룰 수 있었기 때문이다. 이러한 성취가 단순히 알고리즘뿐 아니라, 다른 분야에도 적용 가능할 것이라고 생각했고 이런 식의 크고 작은 도전과 성취 경험을 쌓는 것이 계속해서 성장해 나가는 데에 도움을 줄 것이라고 생각했다.
 
앞으로도 분명 많은 어려움과 좌절이 있겠지만, 과거의 경험들을 떠올리며 힘들더라도 꾸준히 좋은 방향으로 노력하는 개발자가 되어야겠다고 다짐했다.