여름방학 인턴으로 삼성 DX의 Research 분야 중 LLM,NLP 분야에 지원을 했는데 4월 5일에 서류 합격 문자를 받았다. 우선 서류 합격한 건 기쁘긴 한데, 역시나 제일 높은 벽은 코딩테스트다.
시험은 4/14였는데, 네이버 코딩테스트를 떨어졌다는 소식을 4/8에 접했어서 이번 시험은 더욱 열심히 공부해야겠다는 의지를 불태워봤다.
하지만 내 알고리즘 실력이 뛰어나지 않기 때문에... (백준 티어 골드4, 무난하게 푸는 수준은 실버 중위, 시간 들여서 푸는 수준은 실버 상위 ~ 골드 하위) 준비하는 데에 정말 막막했다.
우선은 기초적인 부분을 강화하는게 우선이겠다 싶어서 코드트리에서 연습을 했다.
https://www.codetree.ai/missions
코드 트리에서 알고리즘 유형별로 문제들을 잘 정리해놓아서 연습이 아주 잘 됐다. 이전 후기들을 찾아보니 SW역량테스트의 문제들은 대부분 그래프 탐색과 시뮬레이션에서 나온다고 해서 DP, BFS, DFS, 시뮬레이션 위주로 문제들을 많이 풀어봤다. 그렇게 5일 정도는 기본기를 쌓았고, 2~3일 정도는 마찬가지로 코드트리에 올라와있는 삼성 sw역량테스트 기출문제를 풀어보았다.
최근 2~3년 동안은 모두 시뮬레이션 문제들이 나와서, 어느 정도 풀 수는 있었는데 로직이 워낙 길다 보니 끝까지 푼 문제들은 많지 않았다. 무엇보다 시간이 아주 촉박한 상황이라 한 문제에 시간을 많이 투자하기보단, 풀다가 해설 코드를 참고하는 방식으로 공부를 이어나갔다. 그리고 어차피 2 문제 중 1 문제만 맞추면 되는 시험이라 너무 어려운 로직이 들어있는 문제들은 과감하게 패스했다.
그렇게 기출문제 10개 정도랑 코드트리의 문제 50개 정도를 풀고 코딩테스트에 임하러 간다. 일주일 가량 준비했는데 이 일주일이 인생에서 내가 알고리즘을 가장 열심히 공부한 기간이다. 붙을지 떨어질지는 모르지만 그래도 열심히 공부하면서 오랜만에 의지도 불태워봤고, 마음가짐을 다잡는 기간으로 기억될 것 같다.
시험 후기
시험은 용인의 삼성 인재개발원으로 가서 응시했다. 오전반이었어서 잠을 4시간 정도도 못 자고 출발한거라 제 컨디션이 아니었지만 몬스터 한 캔을 마시니 그럭저럭 나쁘진 않았다.
기출문제들과 비슷한 난이도로 나온 것 같다. 최근 2~3년간은 시뮬레이션 문제가 많았다고 했는데 이번에도 시뮬레이션과 비슷하게 문제가 출제되었으나 그 과정에서 DFS, BFS, 백트래킹 등 그래프 탐색을 하며 정보를 카운팅해줘야 하는 요소들이 있었던 것 같다.
나는 1번은 좀 복잡한 감이 있어서 2번을 풀었는데 2시간 가량만에 코드를 완성시켰으나 왜인지 모르게 일부 테케에서 자꾸 오답이 나왔다. 어디서 잘못된건지 디버깅을 해보면서 남은 2시간 동안 열심히 찾아봤는데 끝끝내 찾는 데에는 실패했다. 최단거리를 찾는 과정에서 백트래킹으로 접근했는데 아마 그 부분이 잘못된 것 같긴 하다.
https://www.codetree.ai/training-field/frequent-problems/company/samsung/problems
문제들은 이미 코드트리에 업데이트가 되어 있었다.
마지막 3일 정도 시뮬레이션만 주구장창 팠는데 100퍼센트 시뮬레이션으로 풀 수 있는 문제는 없었고 1번은 BFS를 활용한 Flood Fill 알고리즘, 2번은 다익스트라 알고리즘을 이용한 최단 거리 계산 문제가 나왔다. 아쉽지만 뭐 내 실력이 처음부터 모든 유형을 준비하긴 어려웠고 시간이 워낙 짧았기 때문에 선택과 집중을 한 결과가 나온 거라 생각한다. 두 문제 중 한 문제만 풀면 합격이라고는 하지만 실력이 충분하지 않다면 나처럼 떨어지는 경우가 빈번할 것 같다.
시험 정보에 대해 조금 적어보자면 파이썬 사용자들은 파이참을 사용가능한 툴로 제공해준다. (커뮤니티 버전) 파이참에서 코드를 작성하다가 코딩테스트 홈페이지에서 코드를 제출, 실행하는 방식이다. itertools와 sys는 사용 불가능, collections는 사용 가능했다. 이 외에는 다 평상시 파이썬으로 연습할 때와 동일한 조건이었다.