B형 이란??
삼성에서 SW 개발자의 역량을 평가하기 위해 시행하는 시험이다. A형, B형, C형으로 나뉘며, 코로나 이전에는 주기적으로 시행되었으나, 코로나 이후로는 SSAFY, 대학생 특강, 임직원 등 제한된 경우에만 응시할 수 있다.
시험 구성은 위 사진처럼 있다. 제한 언어는 C, C++, Java이며 가끔 Python도 허용한다. 시험은 4시간 동안 진행되며, 1문제를 풀어야 한다.
문제 유형은 시험 응시 가능한 사람들은 swea에 코드 배틀에서 제공이 될 것이다.
문제 유형은 경험상 자료구조와 구현을 중점으로 두는 느낌이고, 대회 수준의 알고리즘은 나오지 않는다.
전략
- 문제를 읽고 제한 사항(입력 범위, 개수 등)을 파악한다.
- 문제를 풀기 위한 알고리즘을 생각나는 대로 종이에 적는다.
- 작성한 알고리즘 중 가장 효율적인 것을 선택한다.
- 코드를 작성한다.
위와 같은 순서로 진행하는게 좋다. 이번이 3번째 응시인데, 1,2번째 응시 때는 바로 코드를 작성하고 시간초를 줄이는 방식으로 했었다. 그래서 시간이 부족해서 항상 test케이스도 통과하지 못했었다. 하지만 이번에는 종이로 생각을 정리하고, 코드를 작성하니 1시간 반만에 풀고 제출할 수 있었다.
시간 복잡도 팁
보통 문제에서 25개의 테스트 케이스가 주어지고 1~3초 내에 통과해야 한다. 하지만 때에 따라서 주어진 테스트 케이스보다 많은 50개의 케이스를 통과 해야는 경우도 있다. 그래서 시간 복잡도를 잘 파악하는 것이 중요하다.
50개 3초라고 생각하면 1개당 0.06초이다. 하지만 이렇게 모든 케이스가 최악인 경우는 드물다. 그래서 들리는 소문에 따르면 주어진 테스트케이스를 2배로 늘려서 생각하면 된다고 한다.
예를 들어 위와 같은 경우에 25개 테스트케이스가 주어지면 1.5초 보다 조금 더 줄이면 된다.
후기
SSAFY에서 한 동안 알고리즘만 풀다 보니 폼이 올랐었는데, 마침 B형을 응시할 수 있어서 통과했다. 사실 정해(正解)라고 생각한 풀이가 아니었는데 합격할 수 있어서 얼떨떨했다. 그래도 SSAFY하면서 세웠던 목표 중 하나를 달성해서 기분이 좋다.