창업에 관심이 많아서 경영학과를 선택했지만, 막상 경영학과에는 창업에 진심이거나 대학생 창업을 도전해본 사람들을 찾긴 매우 어려웠다. 오히려 창업에 대해 잘 알고 많이 도전해본 사람들은 컴공 사람들이었다. 그래서 20살이 거의 다 지나갈 즈음 코딩이라는 것을 배워보고 싶다는 생각을 하게 되었다.
1학년 2학기에 마케팅관리라는 전공 수업을 들으며 이 과를 떠야겠다는 확신을 갖게 되었다. 나름 열심히 공부를 했지만 내가 무엇을 공부하고 있는지 잘 모르겠다는 의문만 생겼고, 교수님도 내가 이 과목에 애정이 없다는 것을 아셨는지 학점으로 BO를 주셨다.
전과를 하고 싶지만 BO라는 성적을 들고 전과를 할 수는 없었다. 그래서 전과를 위해 입대를 결심했다. 군대찬스를 사용하여 전과를 준비해야겠다고 생각했고 1학년을 마치고 바로 입대하였다.
군대에서는 파이썬과 자료구조, 전역 후에는 c언어와 알고리즘을 공부하며 전과를 준비했다.
Q. 자기소개 간단히 부탁드립니다.
A. 안녕하세요, 저는 배움을 위해 주도적으로 움직이며, 누구보다 깊이 있는 학습을 할 줄 아는 학생입니다.
저는 군대에서 코딩을 시작하였고, 경계근무 순번의 공정성 문제를 인식하고 이를 해결하기 위한 프로그램을 개발하여 포상과 표창장을 받은 경험이 있습니다.
전역 후 웹 개발을 경험하며 데이터베이스 설계부터 코드 작성, 배포까지의 과정에서 단순히 코드만 잘 치는게 아니라 컴퓨터 공학적 지식까지 겸비해야 한다는 것을 느꼈습니다.
이후 전과를 결심하였고, 자료구조와 알고리즘을 공부하였습니다.
그 결과 HCPC 알고리즘 대회에서 수상까지 할 수 있었습니다.
(말 끊고 다른 질문으로 넘어감)
Q. integer 데이터 10개를 배열로 Dynamic memory allocation 하면 메모리에 어떻게 저장되나요?
A. 인티져 자료형이 4바이트를 차지하고 10개면 40바이트를 차지합니다. 동적 할당이므로 40바이트가 메모리의 힙 영역에 들어가며 배열이기 때문에 10개의 데이터가 연속적으로 메모리공간에 할당됩니다. 또한, 이 배열을 가리키는 주소를 담고 있는 포인터 변수는 4바이트를 차지하며 스택 영역에 저장됩니다.
Q. 퀵소트 설명해보세요
A. 잘 기억이 나지 않습니다. 다른 정렬을 설명해도 되겠습니까? (네네)
heap sort 설명해보겠습니다.
힙 정렬은 최대힙 또는 최소힙으로 정렬하는 방법입니다.
완전이진트리를 기반으로 하며 가장 큰 값 또는 가장 작은 값을 찾거나 제거할 때 유리합니다. (뻘소리 좀 많이 한 것 같아요.) 힙 정렬은 데이터 삽입 또는 삭제 시 worst case에서 시간복잡도 (logN) 을 보장합니다.
Q. 힙 정렬은 build 하는데 시간복잡도가 얼마나 걸리나요?
A. 음… (5초 고민하고) n개의 데이터를 매번 log(n)의 시간복잡도로 힙에 추가하므로 worst-case에서 nlogn이 걸립니다.
힙 정렬에서 nlogn 보다 빠르게 정렬할 수 있겠어요?
(뇌정지.. 고민 3초함) 지금 생각나는 것은 없는 것 같습니다…
Q. 군대에 있을 때 만든 프로그램에 대해 설명해보세요.
A. 경계근무 순번 자동화 프로그램입니다. 근무 날짜는 가중치를 계산하여 해결하였고 순번 문제에서 모든 인원의 공정함을 보장하지 못하는 상황이 발생했습니다. 이를 해결하기 위해 이분매칭 알고리즘을 사용하였습니다. 군대에서 처음 코딩을 시작하였고 자료구조와 알고리즘을 공부하며 그래프이론에 관심이 생겨 공부하던 중 최대유량 알고리즘에 대해 알게 되었고, 이를 활용하면 근무순번 문제를 효과적으로 해결할 수 있다고 생각했습니다. VB script를 이용하여 dfs를 기반으로 한 이분매칭 알고리즘을 사용하여 순번문제를 해결하였고 사단 전체가 제 프로그램을 사용하게 되었습니다.
Q. 이분매칭 알고리즘에 대해 간단히 설명해보세요.
A. 이분 매칭 알고리즘은 이분그래프에서 양쪽 그룹의 정점들 간의 최대 매칭을 찾아내는 그래프 이론 기반의 알고리즘 입니다.
저는 DFS를 활용하여 구현하였습니다. 우선 각 정점에 대해 연결 가능한 다른 그룹의 정점이 있는지 확인하고 연결이 가능하다면 매칭을 시키고 가능하지 않다면, 매칭을 시도하는 정점이 현재 연결되어 있는 정점에 대하여 다른 연결이 가능한지 확인하는 방식으로 동작합니다.
이 과정을 통해 O(V+E)의 시간복잡도로 최대매칭을 구할 수 있습니다.
Q. (학업계획서를 보며) 고등학교 때 이과였어요? 근데 왜 경영으로 갔어요?
A. 고등학교 때 창업에 관심이 많아서 경영 지원했습니다. 그러나 진로에 대한 깊은 고민없이 학교만 바라보았던 것 같습니다. 대학 입학 후 진로에 대한 고민 결과 컴퓨터가 재미있고 이 분야를 깊게 공부하고 싶다는 생각이 들었습니다.
(면접관님들께서 서로 더 질문 있는지 물어보더니 다들 없다고 하심.)
(면접 끝낼라고 하는 것 같길래 그냥 내가 하고 싶은 말 다함)
컴소 커리 따라가기 위해 지금까지 열심히 노력해왔고, 알고리즘 대회 수상이랑 고등학교 때 수학경시대회 수상했던 거 웹사이트 만든 거 등등 수학적 사고력 좋고 컴소 교수님들께 배우고 질문하고 소통할 수 있는 기회가 꼭 필요하다고 하고 인사하고 나옴
우선, 학업계획서에서 자료구조를 공부했다고 써놓고 막상 복잡하고 중요치 않은 알고리즘만 준비하고 가장 기본적이고 중요한 정렬 알고리즘에 대해 복습하지 않았다는 점에서 반성을 많이 하게 되었다.