본문 바로가기
알고리즘

Python 개발자의 삼성 SW 역량테스트 B형(Pro) 합격 수기

by 콰이엇 2024. 4. 8.

 

 

 SSAFY 10기 서울캠퍼스 비전공 Python반 출신으로서 삼성 SW 역량테스트 B형(Pro) 합격하기까지의 과정을 담았습니다. 이 글을 찾아오신 분들도 두려워하지 않고 도전하면 충분히 취득할 수 있는 시험이라고 생각하니 도전해 보세요 :)

 

1. 삼성 SW 역량테스트 B형 개요

1-1. 언어

 

 안타깝게도 삼성 SW 역량테스트 B형은 C/C++ 또는 JAVA로만 응시할 수 있는 시험입니다. A형을 Python으로 풀이한 많은 사람들이 좌절하는 부분이라고 생각합니다. AI 국비교육을 받고, SSAFY에서도 Python 언어를 학습한 제 입장에서도 응시하기 전에 이미 벽을 느끼기도 했습니다. 하지만, SSAFY 2학기 프로젝트를 통해 BE 개발자로 성장하려면 Spring Framework를 사용하기 위해 JAVA 언어 학습이 필요했습니다. 빠르게 언어에 익숙해지기 위해 알고리즘 문제 풀이를 JAVA로 시작하게 되었고, 덕분에 B형 응시까지 시도해 볼 수 있는 기회가 생겼다고 생각합니다.

 

 “내가 정말 관심 있는 회사에서 어떤 언어를 사용한다면, 그 언어를 사용할 줄 알아야 하지 않을까요?”. SSAFY 취업박람회의 한 기업에서 코딩테스트 언어 제한에 대한 질문에, 인사담당자분께서 이런 말씀을 하신 적이 있습니다. 가혹한 말씀이었지만 어느 정도 공감할 수 있는 답변이었습니다. 이런 말들이 다른 언어를 학습할 수 있었던 원동력이 되지 않았을까 싶은 생각도 들었습니다. 굳이?라고 생각할 수도 있지만 제게는 꽤나 자극이 되는 말이었습니다.

1-2. 난이도

 4시간 동안 한 문제에 대해 풀이 과정을 고민하고 최적화를 하다 보면 충분히 풀 수 있는 문제를 출제한다고 느꼈습니다. 삼성 SW 역량테스트는 기업 코딩 테스트에서 일반적으로 볼 수 있는 유형으로 출제하며, 특히 구현 능력을 가장 중요시하는 시험이라고 생각합니다. 이는 A형 검정 과정에서도 충분히 느낄 수 있었을 거라고 생각합니다. 즉, 다양한 문제를 꾸준히 많이 풀어본다면 경험해 본 문제 풀이를 응용하여 풀이가 가능한 시험입니다. 주어진 시간 내에 나도 풀 수 있다는 마음으로 고민하고, 풀이 방법을 찾다 보면 반드시 해법이 보일 테니 기죽지 말고 해결할 수 있다는 마음으로 부딪혀 보면 좋겠습니다 :) 

 

2. 준비 과정과 자료구조

2-1. 준비 과정

 기업 코딩테스트에서 출제하는 알고리즘 유형들을 다양하게 접해보는 것을 추천드립니다. 혹시 백준 플랫폼의 문제집을 통해 빈출 유형들을 접해 보신 경험들이 있으신가요? 감사하게도 SSAFY에서는 이러한 알고리즘 유형에 대해 알고리즘 강의를 제공하고 있습니다. B형 응시를 준비하는 사람들을 위해 B형 특강을 진행하기도 합니다. 꼭 SSAFY가 아니더라도 삼성 SDS 알고리즘 특강 등 찾아보면 학습할 수 있는 기회는 충분히 주어진다고 생각합니다.

 

https://www.acmicpc.net/workbook/view/1152

 

문제집: 삼성 SW 역량 테스트 기출 문제 (baekjoon)

 

www.acmicpc.net

https://www.codetree.ai/training-field/frequent-problems/company/samsung/problems

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 어느정도 빈출 알고리즘 유형에 익숙해졌다면 백준 플랫폼의 삼성 SW 역량테스트 기출문제 또는 코드트리의 삼성 공채 코딩테스트 문제를 풀어보세요. 문제 풀이를 진행하다 보면 사용하는 자료구조나 문제 접근 방식은 다를 수 있지만 결은 비슷하다고 느낄 수 있을 겁니다!

 

BOJ 그룹 기능을 활용한 연습 시스템

 

 혹시 혼자 문제 풀이하는 습관을 형성하기 어렵다면 알고리즘 스터디를 운영하거나 참여해 보세요. 저는 16명이 함께 매일 문제 풀이를 진행하는 알고리즘 스터디를 약 8개월째 운영하고 있습니다. 8개월 동안 매일 문제 풀이를 진행하면 얼마나 많은 문제를 풀어볼 수 있었을까요? 생각보다 다양하지 않은 빈출 코딩 테스트 유형에 대해 충분히 씹고 뜯고 맛볼 수 있었습니다. 물론 처음엔 어렵지만 제 친구들도 골드 문제를 쉽게 접근해서 금방 풀이하는 것처럼, 여러분들도 충분히 성장할 수 있습니다!

2-2. 자료구조와 알고리즘 유형

 삼성 SW 역량테스트는 구현 역량을 가장 중요하다는 것을 먼저 말씀드리고 싶습니다. 특히 2차원 그래프를 자유자재로 다룰 수 있어야 한다고 생각합니다. 문제 풀이 플랫폼을 통해 2차원 그래프의 변형을 요구하는 문제들을 다양하게 접해보세요. 2차원 그래프를 뒤집고, 회전하고, 반전시키다 보면 SW 역량테스트에서 요구하는 수준의 구현력은 충분히 갖출 수 있을 것입니다.

 

 이러한 과정에서 자료구조는 원하는 값들을 자유자재로 다루기 위해 사용하는 도구라고 생각해요. 선입선출이 불가능한 Stack을 가지고 놀다가, 선입선출이 가능한 Queue가 도입되었을 때 편안한 감정을 느낀 적이 있으신가요? 특정 값을 바로 찾는 Set, 가진 값들 중 가장 작은 값을 빠르게 찾아주는 우선순위 큐 등 각 자료구조들은 장단점이 있고, 이를 활용하여 최적화를 진행할 수 있습니다. 제가 생각하는 필요한 자료구조와 문제 풀이 방법들을 아래에 나열해 둘게요. 다양하게 접해보세요! 

  • List, Stack, Queue(Deque), HashMap(dictionary), Set, Linked List
  • Graph, Tree, 완전 이진 트리, 우선순위 큐
  • Brute Force(완전 탐색), BFS, DFS, 백트래킹, 누적합, DP, dijkstra
  • 구현, 시뮬레이션, 이분탐색, 투포인터, 문자열

저는 아래 문제 풀이 방법 또는 유형은 별도로 추천하지 않습니다. 기업에서 요구하는 역량은 아니라고 생각해요.(뇌피셜)

  • Greedy, 정수론

다른 자료구조나, 문제 풀이 유형들이 있겠지만 풀다 보면 위에 나열한 것들에서 응용했을 뿐 크게 차이가 없을 거예요!

 

3. 문제 풀이 과정

 시간을 몇 분, 몇 시간을 사용하는 것은 중요하지 않아요. 결국 고민해서 풀어내는 것이 중요합니다. 포기하지 않고 엉덩이 눌러앉아 문제 푸는 것이 능력이자 역량이라고 생각합니다. 알고리즘 국제 대회에 출제하는 수준의 문제는 주어지지 않습니다. 최대한 주어지는 모든 시간을 활용하려고 노력해 보세요. 이런 습관을 가진다면 삼성 SW 역량 테스트를 떠나서, 기업 코딩 테스트에서도 어느 문제든 풀어낼 수 있을 거예요!

3-1. 문제 풀이에 앞서

 문제 풀이에 앞서 문제를 꼼꼼히 읽고, 조건을 정리하는 과정이 중요하다고 생각합니다. 삼성 SW 역량테스트는 친절하게 주의해야 할 점들을 강조하고 굵은 글씨로 명시하여 문제 조건을 제시합니다. 특히, 각 변수에 해당하는 값의 범위와 주어지는 스켈레톤 코드 함수의 실행 횟수를 설명하고 있습니다. 변수의 범위를 고려하여 메모리 초과를 방지할 수 있고, 실행 횟수를 기준으로 시간 복잡도를 고려하다 보면 내가 구현하고자 하는 풀이 과정으로 테스트 케이스 통과가 가능할지 어느 정도 가늠할 수 있습니다. 주어지는 테스트 케이스 외에도 최악의 경우까지 생각해 본다면 통과 가능 여부를 충분히 판단할 수 있을 거예요!

3-2. 문제 풀이

 문제 풀이를 진행하지 않은 분들께 제가 풀었던 문제들을 설명하는 것은 도움 되지 않는 내용이라 생각하여 과감히 생략하겠습니다. 대신 어떤 마음가짐 또는 방법으로 접근하는 것이 좋을지 설명드릴게요!

 

 주어지는 스켈레톤 코드의 함수에 대해 구현해야 하는 바를 명확히 정의하는 것을 추천드립니다. 문제에서 각 함수에 대해 어떤 조건들을 고려해야 하는지 친절히 설명하고 있고, 이를 기반으로 실행 횟수 또한 제시하고 있습니다. 각 함수 위에 변수 값의 범위 또는 함수 호출 횟수를 미리 작성해 보면 수차례 문제를 읽고 고민하는 과정에서 길이 보일 것입니다. 이런 습관은 0 또는 1과 같은 범위에 인접한 값에 의해 실수로 틀리는 경우를 방지하는 장치가 되기도 합니다.

3-3. 디버깅

 주어지는 테스트 케이스만으로도 시간초과, 경계값 등 놓치고 실수하기 쉬운 값을 테스트할 수 있습니다. 삼성 SW 역량테스트는 스켈레톤 코드가 주어지기 때문에 사실 디버깅하기 정말 어려운 환경이라고 생각합니다. 그래프를 직접 값으로 주어지는 문제가 많고, 한 변의 길이가 수백까지 올라가는 경우도 발생하여 직접 테스트 케이스를 만들어 테스트해 보기도 쉽지가 않기 때문입니다. 하지만, 주어지는 테스트 케이스는 대부분 50개 정도로 다양한 경우를 테스트할 수 있게 설계되어 있습니다. 이 과정에서 틀렸다고 포기하지 않고, 어떤 부분이 틀렸는지 고민하다 보면 해법이 나올 것입니다.

 

4. 정리하며

 수많은 합격자분들이 합격하신 것처럼 여러분들도 노력하면 충분히 삼성 SW 역량테스트 B형을 취득할 수 있습니다! 문제를 꼼꼼히 읽고, 자신만의 방법으로 정리하고 한 걸음씩 천천히 나아가다 보면 보이지 않던 길도 나타난다고 생각해요. 어려운 시험이지만 도전해 볼 가치가 있고 자신의 능력을 테스트해 볼 수 있는 시험이라고 생각합니다. 어렵게 느껴지더라도 열심히 준비해서 응시하면 합격할 수 있습니다! 여기까지 읽으신 모든 분들께 도움 되는 글이길 바랍니다 :)