
게임 프로그래머는 기획서의 규칙을 실제로 돌아가는 코드로 바꾸는 사람입니다. 수업은 C 언어와 C++로 변수, 함수, 포인터, 객체지향 같은 기본기를 단단히 …
하루 한 개 루틴이 무너지는 세 가지 이유
첫째는 너무 어려운 문제로 시작하는 것입니다. 첫 주부터 몇 시간씩 붙잡게 되면 다음 날 문제를 열기가 싫어집니다. 둘째는 시간 상한이 없는 것입니다. 한 문제에 저녁 시간을 다 써 버리면 다른 공부와 생활이 밀리고, 결국 루틴을 포기하게 됩니다. 셋째는 기록이 없는 것입니다. 푼 문제가 쌓이는 게 보이지 않으면 성장을 체감하기 어렵습니다.
그래서 이 루틴은 반드시 풀 수 있는 수준에서 시작하고, 시간을 정해 두고, 끝나면 몇 줄이라도 남기는 것을 원칙으로 삼습니다. 하루 한 개라는 목표는 작아 보이지만, 작기 때문에 바쁜 날에도 지킬 수 있다는 것이 가장 큰 장점입니다. 시간대도 정해 두면 좋습니다. 출근이나 등교 전 아침, 저녁 식사 직후처럼 매일 비슷하게 비는 시간을 하나 골라 그 시간에는 문제부터 여는 식입니다. 시간이 고정되면 오늘 할지 말지 고민하는 과정 자체가 사라집니다.
하루 60분 안에 끝내는 풀이 순서
- 5분: 문제를 읽고 입력 크기와 시간 제한을 확인한다
- 10분: 손으로 예제를 따라가며 풀이 아이디어를 문장으로 적는다
- 25분: 코드를 작성하고 예제로 확인한다
- 10분: 틀렸다면 반례를 직접 만들어 본다
- 10분: 풀이를 기록하고 다른 사람의 풀이를 하나 읽는다
입력 크기를 먼저 보는 이유는 어떤 방식으로 풀어야 시간 안에 끝나는지 가늠할 수 있기 때문입니다. 데이터가 작다면 모든 경우를 다 확인하는 방식도 통하지만, 크다면 정렬이나 이분 탐색처럼 효율적인 방법이 필요합니다. 이 판단을 습관으로 만들면 코드를 다 짜고 나서 시간 초과로 처음부터 다시 쓰는 일이 줄어듭니다.
다른 사람의 풀이를 읽는 단계도 건너뛰지 마세요. 내가 맞혔더라도 더 짧고 빠른 방법이 있는 경우가 많습니다. 여기서 배운 기법 하나가 다음 문제의 실마리가 됩니다.
요일마다 유형을 바꾸는 주간 배치
매일 아무 문제나 고르면 좋아하는 유형만 반복하게 됩니다. 요일별로 유형을 정해 두면 고르는 시간도 줄고 약한 유형이 자연스럽게 드러납니다.
| 요일 | 유형 | 게임 개발과 닿는 지점 |
|---|---|---|
| 월 | 구현·시뮬레이션 | 규칙대로 움직이는 게임 로직 |
| 화 | 정렬·이분 탐색 | 랭킹, 아이템 목록 정렬 |
| 수 | 스택·큐·해시 | 입력 처리, 아이템 검색 |
| 목 | 그래프 탐색(BFS·DFS) | 맵 이동, 길찾기의 기초 |
| 금 | 동적 계획법 | 보상 조합, 최적 경로 계산 |
| 주말 | 그 주에 틀린 문제 다시 풀기 | 복습과 정리 |
특히 구현·시뮬레이션 유형은 게임 프로그래머에게 의미가 큽니다. 격자 위에서 캐릭터가 규칙에 따라 움직이고 부딪히는 문제는 실제 게임 로직을 짜는 것과 매우 닮았습니다.
난도는 이렇게 올립니다
처음 몇 주는 거의 다 맞힐 수 있는 쉬운 문제로 시작합니다. 대부분의 온라인 저지 사이트는 문제마다 난도 표시를 제공하므로, 가장 낮은 단계에서 시작하면 됩니다. 그 유형에서 연속으로 막힘없이 풀리면 한 단계 올립니다. 반대로 같은 유형에서 이틀 연속 시간 안에 못 풀었다면 한 단계 내립니다.
이 규칙은 단순하지만 효과가 큽니다. 늘 조금 어려운 문제를 풀게 되어 지루하지도, 좌절하지도 않는 구간을 유지할 수 있습니다. 난도 표시가 없는 문제집을 쓴다면 내가 푸는 데 걸린 시간을 기준으로 삼아 조절합니다.
난도를 올릴 때 주의할 점이 있습니다. 어려운 문제를 풀었다는 성취감 때문에 한 번에 여러 단계를 건너뛰고 싶어지는데, 그러면 중간 단계에서 익혀야 할 기법을 놓치기 쉽습니다. 예를 들어 너비 우선 탐색을 막 익힌 상태에서 바로 복잡한 가중치 그래프 문제로 가면, 기본 탐색 코드를 매번 새로 짜느라 시간을 다 씁니다. 한 단계씩 올리며 기본 코드를 손에 익히는 것이 결국 빠릅니다.
막힌 문제를 처리하는 규칙
시간 상한을 넘겼다면 그날은 풀이 아이디어만 확인합니다. 정답 코드를 그대로 따라 치는 것이 아니라, 핵심 아이디어가 무엇이었는지 한 문장으로 적고 창을 닫습니다. 그리고 다음 날 루틴의 첫 문제로 그 문제를 다시 풀어 봅니다. 하루가 지나도 아이디어를 기억해 코드로 옮길 수 있다면 그 개념은 내 것이 된 것입니다.
- 기록할 것: 문제 이름, 유형, 걸린 시간, 막힌 지점, 핵심 아이디어 한 줄
- 주말에 확인할 것: 같은 이유로 막힌 문제가 반복되는가
- 반복된다면: 그 개념을 설명한 자료를 찾아 기초부터 다시 본다
기록은 길 필요가 없습니다. 오히려 짧아야 계속 씁니다. 몇 주 쌓인 기록을 보면 내가 약한 개념이 숫자로 보이기 시작합니다. 메모 앱이든 표 파일이든 도구는 상관없습니다.
루틴을 게임 개발 실력으로 연결하기
알고리즘 문제 풀이는 코딩 테스트 대비로 시작하는 경우가 많지만, 게임 프로그래밍에서도 직접 쓰입니다. 그래프 탐색은 몬스터의 길찾기로, 정렬은 랭킹과 인벤토리 정렬로, 동적 계획법은 보상이나 스킬 조합 계산으로 이어집니다. 한 달에 한 번은 그동안 푼 유형 하나를 골라 유니티나 콘솔 프로그램으로 작은 기능을 구현해 보세요.
문제를 꾸준히 풀어도 실력이 정체된 느낌이 들 때가 있습니다. 대개 특정 유형을 피하고 있거나, 풀이를 읽고도 다시 풀어 보지 않았기 때문입니다. 내 기록을 바탕으로 어떤 유형부터 다시 잡아야 할지 고민된다면, SBS아카데미게임학원 게임프로그래밍 과정 상담에서 공부 기록을 보며 우선순위를 정리해 볼 수 있습니다.
자주 묻는 질문
주말에도 꼭 풀어야 하나요?
꼭 그럴 필요는 없습니다. 주말은 새 문제 대신 그 주에 틀린 문제를 다시 푸는 날로 쓰면 루틴이 덜 부담스럽고 복습 효과도 큽니다.
어떤 언어로 푸는 게 좋나요?
목표 직무에서 쓰는 언어가 좋습니다. 언리얼을 목표로 하면 C++, 유니티를 목표로 하면 C#으로 풀면 문제 풀이와 언어 숙련을 함께 쌓을 수 있습니다.
가까운 캠퍼스에서 게임프로그래밍 알아보기
사는 곳과 가까운 캠퍼스를 고르면 수업 내용, 오시는 길, 상담 신청을 한 번에 볼 수 있습니다.