
게임 회사 프로그래머 채용에서는 코딩 테스트와 함께 직접 만든 프로젝트를 봅니다. 수업 중에 자료구조와 알고리즘 문제를 꾸준히 풀고, 동시에 캐릭터 조작, 물…
게임 회사가 자료구조를 묻는 이유
게임은 매 프레임 짧은 시간 안에 많은 계산을 끝내야 합니다. 화면에 있는 수백 개의 오브젝트를 갱신하고, 충돌을 검사하고, 적의 경로를 찾는 일이 계속 반복됩니다. 이때 자료구조를 잘못 고르면 같은 기능이라도 프레임이 크게 떨어집니다.
그래서 면접관은 이 사람이 상황에 맞는 구조를 고를 줄 아는지를 확인하려고 자료구조를 묻습니다. 정의를 외워서 말하는 것보다, 인벤토리에서 아이템을 이름으로 자주 찾는다면 해시맵을 쓰겠다는 식으로 게임 장면과 연결해 답할 때 훨씬 좋은 평가를 받습니다.
코딩 테스트에서도 같은 능력을 봅니다. 문제를 읽고 어떤 구조로 데이터를 담아야 시간 안에 풀 수 있는지 판단하는 것이 풀이의 절반입니다. 구조만 제대로 고르면 나머지 코드는 의외로 짧아지는 문제가 많습니다. 반대로 구조를 잘못 고르면 아무리 코드를 다듬어도 시간 초과를 벗어나기 어렵습니다.
먼저 끝내야 할 기본 범위
| 자료구조 | 게임에서 쓰이는 예 |
|---|---|
| 배열·동적 배열 | 오브젝트 목록, 타일맵, 순서대로 처리하는 데이터 |
| 연결 리스트 | 중간 삽입·삭제가 잦은 목록, 엔진 내부 구조 이해 |
| 스택·큐 | 되돌리기 기능, 명령 대기열, 너비 우선 탐색 |
| 해시맵 | 아이템 ID로 찾기, 리소스 캐시, 설정 값 조회 |
| 우선순위 큐(힙) | 길찾기에서 가장 가까운 후보 고르기, 이벤트 예약 |
| 트리·그래프 | 씬 계층 구조, 스킬 트리, 맵의 연결 관계 |
각 자료구조마다 넣기, 찾기, 지우기에 드는 시간을 대략적으로 말할 수 있어야 합니다. 이것을 시간 복잡도라고 하는데, 입력이 늘어날 때 작업 시간이 얼마나 빨리 늘어나는지를 나타내는 개념입니다. 이 감각이 있어야 구조를 고르는 이유를 설명할 수 있습니다.
알고리즘은 이 정도면 출발점입니다
- 정렬: 기본 정렬들의 원리와 언어 내장 정렬을 언제 쓰는지
- 탐색: 이분 탐색, 너비 우선 탐색, 깊이 우선 탐색
- 길찾기: 다익스트라와 A*의 차이와 게임에서의 쓰임
- 간단한 동적 계획법: 중복 계산을 저장해 줄이는 방식
- 재귀: 트리 구조를 따라가는 방법과 스택이 넘칠 때의 문제
게임 프로그래머에게 특히 의미 있는 것은 길찾기입니다. 몬스터가 장애물을 피해 플레이어에게 다가가는 기능은 그래프 탐색과 우선순위 큐가 함께 쓰이는 대표적인 예입니다. 이 하나를 직접 구현해 보면 여러 자료구조를 동시에 복습하는 효과가 있습니다.
여기서 더 나아간 고급 알고리즘은 목표 직무에 따라 선택적으로 공부하면 됩니다. 서버 직무라면 동시성과 관련된 자료구조를, 그래픽스나 물리 직무라면 공간 분할 구조를 더 깊이 보는 식입니다.
직접 구현해 보는 것과 라이브러리를 쓰는 것
실무에서는 대부분 언어나 엔진이 제공하는 자료구조를 씁니다. 그런데도 공부할 때 한 번씩 직접 구현해 보라고 하는 이유는, 내부가 어떻게 동작하는지 알아야 올바르게 쓸 수 있기 때문입니다. 동적 배열이 공간이 부족할 때 어떻게 커지는지 알면, 미리 크기를 잡아 두는 최적화를 자연스럽게 떠올릴 수 있습니다.
모든 것을 다 구현할 필요는 없습니다. 동적 배열, 연결 리스트, 해시맵, 힙 정도를 직접 짜 보고, 나머지는 라이브러리를 쓰며 원리를 정리하는 것으로 충분합니다. 구현한 코드는 저장소에 정리해 두면 면접 전에 복습 자료로도 쓸 수 있습니다.
C++을 쓴다면 표준 라이브러리 컨테이너들의 차이를, C#을 쓴다면 기본 컬렉션들의 특징을 비교해 정리해 두는 것도 면접 대비에 직접 도움이 됩니다. 비교표를 한 장으로 만들어 두면 시험 직전에 훑어보기도 좋습니다.
공부 범위가 끝없이 늘어날 때 멈추는 기준
알고리즘 공부는 파고들수록 새로운 주제가 나와서, 언제 멈춰야 할지 모르는 경우가 많습니다. 기준은 두 가지면 충분합니다. 하나는 중간 난이도의 코딩 테스트 문제를 정해진 시간 안에 풀 수 있는가, 다른 하나는 내 포트폴리오 프로젝트에 쓴 구조를 왜 골랐는지 설명할 수 있는가입니다.
이 두 가지가 되면 알고리즘 공부 비중을 줄이고 프로젝트에 더 시간을 쓰는 것이 좋습니다. 알고리즘 문제만 계속 풀다 포트폴리오가 늦어지면, 코딩 테스트는 통과해도 다음 단계에서 보여 줄 것이 부족해집니다. 이후에는 하루 한두 문제 정도로 감을 유지하는 정도로도 충분합니다.
반대로 기준에 못 미친다면 새 주제로 넘어가기보다 기본 범위를 다시 다지는 편이 낫습니다. 어려운 알고리즘을 하나 더 아는 것보다, 스택과 큐와 해시맵을 막힘없이 쓰는 것이 시험과 면접 모두에서 훨씬 큰 차이를 만듭니다. 틀린 문제를 유형별로 모아 두고 일정 기간 뒤 다시 풀어 보면 내 약점이 어디인지 분명하게 드러납니다.
프로젝트에 녹여 낼 때 실력이 됩니다
가장 좋은 공부법은 배운 자료구조를 게임 기능에 직접 적용해 보는 것입니다. 총알을 매번 새로 만들지 않고 미리 만들어 둔 것을 재사용하는 오브젝트 풀, 퀘스트 진행을 관리하는 상태 구조, 맵 이동에 쓰는 길찾기처럼 프로젝트 안에서 쓰면 개념이 훨씬 오래 남습니다. 면접에서도 이렇게 적용한 사례는 강한 답변이 됩니다.
지금 내 공부가 어느 수준까지 와 있고 어디서 멈춰도 될지 판단이 어렵다면, SBS아카데미게임학원 게임프로그래밍 과정 상담에서 현재 실력을 점검하고 프로젝트와의 시간 배분을 함께 정해 드립니다.
자주 묻는 질문
자료구조 책은 처음부터 끝까지 다 봐야 하나요?
꼭 그럴 필요는 없습니다. 기본 자료구조 장을 먼저 끝내고, 나머지는 필요할 때 찾아보는 참고서로 써도 충분합니다.
수학이 약하면 알고리즘 공부가 어렵나요?
기본 알고리즘은 복잡한 수학보다 논리적으로 단계를 나누는 힘이 더 중요합니다. 손으로 과정을 그려 보며 따라가면 충분히 익힐 수 있습니다.
면접에서 시간 복잡도를 꼭 말해야 하나요?
자주 묻는 편입니다. 정확한 증명보다 입력이 늘어날 때 대략 어떻게 느려지는지 설명할 수 있으면 됩니다.
가까운 캠퍼스에서 게임프로그래밍 알아보기
사는 곳과 가까운 캠퍼스를 고르면 수업 내용, 오시는 길, 상담 신청을 한 번에 볼 수 있습니다.