들어가며

소프트웨어 마에스트로 11기 활동이 끝난지 대략 3개월 정도 지난것 같다.

매 기수별로 전형에 차이가 있기도 하고, 특히 작년같은 경우는 코로나19 때문에 일정 자체도 예전보다 많이 밀렷었다.

소마 11기 활동을 준비하면서 자료를 얻기 좀 힘들었었는데 후배 기수들을 위해서 공부했던것들을 정리해보려 한다.

 

2021년 12기를 모집하고 있다.

코딩 테스트

코딩 테스트는 10기 때와 11기 때 많이 달랐다고 들었다.

10기 때는 알고리즘 문제로만 시험을 본것으로 알고 있으며, 여러 문제들이 주어진 것으로 알고있다. (제한시간 내에 다풀기 어려운)

11기때는 이와 반대로 알고리즘 3문제, SQL 문제, web 문제 이렇게 총 5문제를 풀었다.

 

알고리즘 시험 대비하기

소마 합격생들의 후기 및 블로그들을 살펴보면 대충 어떤 문제들을 공부했는 지 알 수 있다.

출제 문제들의 공통 특징들을 요약한다면, 문제들이 대부분 O(N logN) 이내에 풀어야 시간초과가 나지 않는 문제들로 이루어졌었다는 점이다.

즉 브루트 포스 방법으로 모든 경우를 시도해 보기 보다는 시간복잡도를 줄여야 하는 문제들이 존재했다.

N log N 이내로 문제를 풀기 위한 기법들은 다음과 같았다.

  • 자료구조
  • 정렬
  • 동적 계획법

이 외에도 그래프 관련 기법들은 알아놓는 편을 추천한다.

기본적인 다익스트라, 플로이드 와샬, 플로이드에서 유니온 파인드(서로소 집합) 정도는 알아놓는것을 추천한다.

특히 문제에서 요구하는 기법 자체를 모를 경우 절대로 시간 복잡도를 줄이기 불가능한 경우가 있었다.

 

개인적으로 추천하는 커리큘럼은 삼성 SDS에서 2주동안 진행하는 알고리즘 특강의 커리큘럼이다.

알고리즘 문제풀이를 진행하며 공부한 알고리즘들을 따로 정리했었는데 도움이 되었으면 좋겠다.

 

changicho/algorithm-training

The repository of problem solving (especially algorithm problems of computer science) - changicho/algorithm-training

github.com

 

여기까지는 정석대로 알고리즘 시험을 준비하는 방법이고,

이 방법대로 준비할 경우 대충 백준 플래티넘 이상 등급정도의 실력을 가지고 있을 것이다.

 

그러나 실제로 코딩테스트 합격자들의 문제 풀이수를 보면, 알고리즘 문제에서 제대로 푼 문제가 1~2 문제 정도였다.

즉 다들 알고리즘 문제의 정답률이 생각보다 낮았으며, 꼭 다 맞출 필요는 없다는 말이 된다.

 

따라서 알고리즘 문제풀이에 자신이 없는 경우는 출제 경향만 훑고 가는것도 크게 도움이 될 것이다.

추천하는 백준 문제들은 다음과 같다.

 

1939번: 중량제한

첫째 줄에 N, M(1≤M≤100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1≤A, B≤N), C(1≤C≤1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 C인 다리

www.acmicpc.net

 

1092번: 배

첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보

www.acmicpc.net

 

2493번: 탑

첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1

www.acmicpc.net

 

SQL 문제

사실 매번 전형이 다르다 보니 SQL 문제는 이번에 나올지 확실할 수 없다.

프로그래머스와 Leetcode에서 SQL 문제를 풀었었고 대부분 SQL 테스트의 경우에는 쉽게 통과할 수 있었다.

LEFT_JOIN, RIGHT_JOIN 정도까지 알고 가면 좋을것 같고, ORDER_BY 정도는 알아야 한다.

 

Web 문제

다양한 분야의 연수생들을 뽑는것을 원칙으로 알고있는데, Javascript + HTML 을 주로 하는 front-end 포지션에 유리한 문제이다.

11기는 시험을 구름 IDE에서 진행했었고, 클라우드 서버에 html, js를 띄워 javascript로 API fetching 을 하는 문제를 냈었다.

보통 이런 경우에 문제는 API서버에 요청을 보낼 수 있는지와 응답받은 데이터를 이용해 DOM을 갱신하는것을 물어보는것이 대부분이고,

CORS 문제를 해결하는 것 정도만 알면 될것이다.

 

면접

11기 면접

2번 정도의 코딩 테스트를 통과하면 이제 면접이다.

최근에는 150명 정도를 선발하기 때문에 (11기 기준) 여기서 부터 경쟁률은 3:1 이하 정도로 떨어진다고 보면 된다.

이는 매 기수마다 경쟁률을 보면 알 수 있는데, 서류 전형부터 경쟁률이 약 10:1 정도였으므로 코딩 테스트에서 절반 이상 떨어뜨린다고 가정했다.

 

면접은 조별로 느낌이 많이 다른것으로 알고있다. 어떤 조는 프로젝트 중심으로, 어떤 조는 CS 지식 중심으로 진행되는 것으로 알고 있다.

종합적으로는 CS지식은 많이 물어보지 않는것 같다. 대신에 프로젝트 경험이 가장 중요하게 작용한다고 생각한다.

특히 대기업 인턴 경험의 경우가 유리했던것 같은데, 이는 어느정도 이미 증명되었다고 볼 수 있는 계기를 마련했기 때문이라고 생각한다.

 

그리고 소마 면접에서 유리한 가장 좋은 경험으로는 다음과 같다.

프로젝트 도중 팀원이 탈주한 경험

 

11기도 약 10% 정도가 도중에 그만둔 것으로 알고있다. 따라서 이런 위기를 극복한 경험이 있다면 다른 지원자들과 차별화 할 수 있을것이다.

 

이 외에도 소프트웨어 마에스트로의 특성에 맞춰서 유리한 경험이 있다면 면접은 크게 준비하지 않아도 될것같다.

+ Recent posts