컴공과컴맹효묘의블로그

[SSAFY] 삼성역량테스트 B형(Professional) 합격 수기 본문

알고리즘

[SSAFY] 삼성역량테스트 B형(Professional) 합격 수기

효묘 2025. 5. 7. 16:44
반응형

2025년 2월 B형 역량테스트 시험을 보라고 연락이 왔다. 원래 A형을 취득한 사람만 볼 수 있었는데, 나는 A형은 없었지만 SSAFY 입과 코딩 테스트에서 좋은 결과가 있으면 바로 B형 응시가 가능하다고 했던 것 같다. 입과 테스트를 잘 봤나보다.

 

당시에 나는 허리디스크 통증이 너무 심해져서 앉기는 커녕 걷기도 힘들어했다. 하지만 B형 시험이 얼마 남지 않았고, SSAFY를 그만두더라도 이 시험은 보고 나오고 싶었다. 그래서 25년 1차 테스트를 신청했고, 평소에 알고리즘 풀이에 익숙한 언어는 cpp로 응시했다.

 

시험을 본지 5일 뒤인 목요일에 합격 연락이 왔다.

개인적으로 B형 테스트는 꼭 통과하고 싶어서 2주동안 열심히 준비했는데, 다행이 합격통보를 받았다. 

합격 통보 메일 1시간 뒤, 합격 수기를 작성해달라는 메일을 받았다.

 

합격수기를 word기준 1페이지를 써달라하여 작성했다.


 

합격 수기

안녕하세요 13기 서울캠퍼스의 ㅇㅇㅇ입니다. 

25년 상반기에 역량테스트 B형에 합격했습니다. 다음 역량테스트 B형에 준비하는 분들께 조금이나마 도움이 되고자 제 합격수기를 적어보고자 합니다.

[준비과정]

B형 시험의 난이도는 조금만 생각해보면 어렵지 않게 풀 수 있는 것 같습니다. 백준으로 치면 골드 1, 2정도의 난이도라고 느꼈습니다. B형 테스트의 유형은 대부분 함수 구현 즉, 삽입, 삭제, 조회, 수정 등의 연산을 구현해야 합니다. 제가 풀어왔던 문제 유형과 많이 달랐지만, B형 특강을 열심히 수강한 덕분에 합격을 할 수 있었던 것 같습니다. 실제로 특강을 듣지 않았더라면 합격하지 못했을 것 같습니다. 특히 SWEA Pro 문제 중 병사관리 문제가 있었는데 이 문제를 풀어본 것이 합격에 많은 도움을 준 것 같습니다. 

저는 싸피 입과 직전 부터 백준 사이트에서 실버2~골드1 수준의 문제를 꾸준히 알고리즘 문제를 풀어왔습니다. 이 과정에서 그래프, DP, 문자열, 최단경로 등 여러 유형의 문제를 풀고 익혔습니다. 고급 DP나 어려운 알고리즘보다는 기초 자료구조 활용이나 기본적인 알고리즘을 응용하여 풀 수 있을 정도만 풀었고, 문제풀이에 익숙해지면 역량테스트 B형에서 어떤 유형의 문제가 나오더라도 금방 파악할 수 있을 것이라고 생각했습니다. 실제 테스트에서는 바로 떠올리지 못 했지만, 여러 유형의 문제에 익숙해져 있는 상태였기 때문에 나중에라도 문제 풀이 방법을 떠올릴 수 있었습니다.

[준비 팁]

알고리즘 풀이에 익숙해져야 합니다. 실제 테스트에서는 어떤 문제가 나올지 모르기 때문에 알고리즘을 많이 풀어보면서 자료구조와 알고리즘에 익숙해질 필요가 있습니다. 특히 자료구조는 큐, 스택, 배열, 링크드리스트, 우선순위 큐, 해시맵 정도는 필수로 알고 사용하실 줄 알아야 합니다. 특히 본인이 응시할 언어로 해당 자료구조들을 자유롭게 구현할 줄 알아야 합니다.

저는 C++로 응시했습니다. C++로 푸는 경우에는 STL을 사용하게 되는데, 이 때 자주 사용하는 priorioty_queue의 정렬 기준이나 sort custom sort하는 방법들을 시험 응시 전에 숙지하고 가는 것이 중요합니다. 다른 언어도 마찬가지로 사용 가능한 표준 라이브러리의 사용 방법을 꼭 미리 숙지하셔야 합니다.

위에서 언급했지만, 삼성 역량테스트 B형은 SWEA Pro 문제 유형과 비슷합니다. 문제 풀이의 아이디어도 중요하지만 최적화 또한 중요하기 때문에 준비할 때 최적화하는 방법을 공부하는 것도 도움이 될 것 같습니다.

[문제 풀이]

25년 상반기 1차 문제는 SWEA Pro 병사관리와 비슷하다는 느낌을 받았습니다. 우선 주어지는 문제의 삽입, 삭제, 조회에서 삽입, 삭제 굉장히 유사한 느낌을 받았습니다. 제가 응시한 문제는 삭제 과정에서 index가 아닌 특정 ID 가지고 삭제와 수정을 수행했어야 했습니다. 따라서 Map을 떠올렸고 Map LinkedList 이용하면 특정 그룹에 객체들을 관리할 수 있습니다. 이러한 점에서 병사관리와 유사하다고 느꼈습니다.

이번 문제는 주유소 문제였습니다. N개의 도시에서 각 주유소가 있고, 주유소는 단위거리당 비용이 존재합니다. 구현해야할 함수는 초기화, 삽입, 삭제, 조회였습니다. 삽입과 삭제 시 index가 아닌 특정 ID사용하였기에 Map을 이용했고, 특정 도시를 조회하면 해당 도시와 연결된 도로를 찾아야했기에LinkedList 이용해 관리했습니다.

도시와 도로를 표현하는 Node 만들어서 LinkedList로 연결해주었고, 이로 인해 각 도시에 연결되어있는 도로를 next하며 전부 순회할 수 있었습니다. 각 도시의 주소값을 리스트에 저장해두면 도시 조회에 O(1), 도로 삽입 삭제에 O(1)이 걸립니다.

조회 함수에서는 목적지까지 이동할 때 드는 최저 비용을 연산해야 했습니다. 하지만 무작정 경로를 찾으면 시간 초과가 되기 때문에 최적화하는 것이 중요했습니다. 해당 문제는 그래프와 주유소 문제였습니다. 이 문제의 특징은 방문했던 도로를 한번 더 방문할 수 있다는 점이었습니다. 이 때문에 순환이 생겼으며, 이를 visited[roadId][cost]로 관리하여 순환을 방시할 수 있었습니다. 또한  우선순위 큐를 사용하여 가장 비용이 적게 들었던 상태를 우선적으로 연산하여 제한시간 내 최저비용에 도달할 수 있었습니다. 문제에 대한 아이디어도 중요하지만 최적화가 없으면 풀지 못 하는 문제였습니다.

저는 위 과정을 한 번에 생각해내지는 못 했습니다. 처음에는 문제를 꼼꼼히 잘 읽고, 어떤 과정에서 최적화가 이루어져야 하는지 고민을 하고 풀이 종이에 적었습니다. 주어진 조건과 문제에서 자료구조와 알고리즘을 떠올리는 것이 중요합니다. 

[마무리]

B형 합격에 가장 도움이 되는 것은 B형 특강과 SWEA Pro 문제 풀이었습니다. 다른 알고리즘과 조금 다른 느낌이니 미리 준비하지 않으면 당황할 수도 있다고 생각합니다. B형은 쉽다고 할 수는 없겠지만 복잡하고 어려운 알고리즘은 요구하지 않으니 자료구조와 기본 알고리즘을 충분히 숙지하면 어렵지 않게 합격할 수 있다고 생각합니다.

감사합니다.

 


 

요약하자면 일반적인 코딩테스트랑 좀 다르다. B형 역량테스트는 어려운 알고리즘 스킬이 요구되는 것은 아니나, 문제를 꼼꼼히 읽고 기본적인 알고리즘을 이용하여 적절한 자료구조를 사용해야했다. 추가적으로 최적화가 필수적이다. 본인이 테스트에서 사용한 자료구조는 LinkedList, Map, memoization 혹은 DP, Priority Queue정도이다.

 

문제 특징은 main.cpp와 solve.cpp두 파일이 존재하고, 문제는 solve.cpp의 특정 함수를 작성해야했다.

 

SSAFY에서 B형 특강을 진행했었는데, 이게 합격에 도움이 많이 됐다. 수업을 잘 듣고 꾸준히 복습하면 어렵지 않게 합격할 수 있다. 특히 Linked List를 활용하는 문제를 좋아하는 것 같다.

 

 

아쉽게도 나는 이 테스트를 보고 얼마 뒤 퇴소를 했다. 많이 아쉽지만 말했듯 일상생활이 불가능한 수준이었기 때문에 회복이 필요했다. 공부도 좋고 빠른 취업도 좋지만 현재 본인의 상황에 따라 쉴 수도 있고 다른 일을 해볼 수도 있는 것 같다. 지금 이 글을 쓰는 시점에서도 많이 회복하지는 못 했다. 오래 앉아있지말고 틈틈히 일어나서 스트레칭과 간단한 산책을 하는게 허리건강에 좋을 듯 하다.

반응형

'알고리즘' 카테고리의 다른 글

다이나믹 프로그래밍과 메모제이션 문제  (0) 2022.03.25
조합 문제 (c++작성)  (0) 2022.02.18
Comments