[Data Structure] Hash Table

Hash Table 해시 테이블


  • 키(Key)에 데이터(Value)를 저장하는 데이터 구조
  • Key를 통해 바로 데이터를 받아올 수 있으므로, 속도가 획기적으로 빨라짐
  • 보통 배열로 미리 Hash Table 사이즈만큼 생성 후에 사용 (공간과 탐색 시간을 맞바꾸는 기법)
  • 캐쉬를 구현하는 등의 검색, 저장, 삭제, 읽기가 많이 필요한 경우 사용
  • 파이썬에서는 dictionary 타입으로 해시 테이블을 구현 가능

Continue reading

210610 첫 에세이 - 나란 사람

들어가며

이 블로그를 만든 지 한 달 만에 처음 에세이를 써 본다. 새벽에 일기 쓰듯 글을 쓰는 것을 좋아하는 편이긴 한데, 요즘 피곤하다는 핑계로 이리 미루고 저리 미루다가 결국 한달이나 되어서야 처음 글을 쓴다. 어찌 되었던 블로그에 게시하는 첫 에세이다보니 나에 대해 길지는 않지만, 짧지도 않게 한번 소개를 해 보려 한다.
이 글 자체가 자기 만족일 수도 있다. 지금 내 블로그에 들어오는 방문자 유입 수를 보면 이 글은 정말 잘 도달 해 봐야 10명 정도에게 노출 될 것이며, 그 중 이 글을 다 읽는 사람은 한두명 정도 될 거라고 예상한다. 1년 뒤, 그때도 내가 하루에 한 포스팅을 이어간다면, 100명 정도에게 노출되고, 10명 정도가 보게되지 않을까. 어찌되었건 글을 끄적이는 걸 좋아하는 나니까, 그리고 얼마 전 보글보글 거리는 타건감이 좋은 무접점 키보드도 비싼 돈 주고 구매 했으니까 한번 끄적여 보려 한다.

13학번 컴공생

나는 13학번으로 대구의 한 대학교에 입학을 했다. 내가 고등학생 때 ‘유령’이라는 드라마를 너무 재밌게 본 나머지 “나도 보안 공부를 해서 해커가 될거야!” 하는 허황된 꿈을 꾸며 컴퓨터공학과에 입학을 해야겠다고 생각을 했다. 취직을 하려면 공대가 좋긴 한데, 흔히들 말하는 전,화,기 (전자공학, 화학공학, 기계공학)을 가기에는 4대 역학을 공부하기가 너무 싫었던 이유도 있었다.
모든 신입생들이 그렇듯 나 역시도 ‘Hello World’를 출력할 때 까지만 해도 컴퓨터가 재미있고, 내가 무언가 대단한 것을 한 것 같았다. 동기들과 자취방에서 밤을 새워가며 교수님께서 내 준 문제를 풀며 (사실 밤새 과제만 하진 않았다. 게임을 한 시간이 더 많을 것이다.) 출력창에 원하는 결과물이 띄어졌을 때의 희열은, 물론 그건 지금도 그렇지만, 여튼 그때는 컴퓨터가 내겐 천직일 것만 같았다. 2학년 때 자료구조를 배우기 전 까지는.

2학년 때 자료구조라는 과목을 공부 할 때 그 놈의 ‘링크드 리스트’가 이해가 되지 않아 공부에 흥미를 잃고 게임에 더 빠졌던 것 같다. 몇년도 더 된 일이라 정확하게는 기억이 나지 않지만, 그렇게 점점 학교 공부는 소홀해 져 갔고, 그러다보니 아예 수업은 빠지고 결국 기말때는 출석조차 하지 않았다. ‘C++(C++로 자료구조를 구현하는 수업이었다.)은 C+ 맞아야지~’ 하는 우스갯 소리와 함께 정말 C+을 맞게되고, 다른 과목도 성적이 더하면 더했지 덜하지는 않아 그렇게 2학년 1학기는 학고를 맞게 된다.
1학년 때는 학고 맞는 친구들은 어지간히 공부를 안했나보다, 그냥 교수님 하라는거 하고 보라는거 보면 B는 나오는데 좀만 열심히 하면 A가 나올텐데 D,F를 맞아서 학고 받는 애들은 뭐하는 애들이야 했었는데, 내가 그 학사경고를 받은 놈이 되어있었다. 이맘때 즘 부터 컴퓨터로 전공을 살리지 않고 취직해야겠다는 생각을 하게 되었다.

휴학과 다른 진로 탐색

우리 학교는 특이하게도 학고를 맞으면 집으로 경고장이 날아오게 되어있다. 애석하게도 나는 그 사실을 몰랐고, 불행하게도 그 등기 우편물은 내가 아닌 어머니가 먼저 보시게 되었다. 그래도 나는 고등학생 때 사고 한번 치지 않고 조신히 학교 다니던 나름 모범생(…?) 이었고 학사경고장을 받아올 줄은 꿈에도 생각치 않으셨던 어머니께서는 휴학하고 군대를 다녀와서 다시 공부하자고 말씀 해 주셨고, 큰 화는 내지 않으셨다. 이제 성인이라시며 니 인생을 이제 니가 책임 질 줄 알아야 한다는 말씀만 하셨다. (지금 생각하면 21살이면 아무것도 못하는 어린애지…)
그렇게 군대를 가기 위해 휴학을 하고 이런 저런 경험들을 하다가 영상 제작에 재미를 붙이게 되고 유튜브가 지금처럼 잘 되어 있지 않던 그 당시 페이스북 채널로 영상인 커뮤니티를 통해 많은 사람들을 알게되었다. 지금 꽤나 큰 규모의 유튜브 채널을 운영하고 있는 유튜버들도 몇 있었다. 그 때 친하게 지내 놓을걸… 어찌되었건 영상에 빠져 이런 저런 영상 기획을 하고 촬영도 해보고 했던 경험은 나름 재밌는 경험으로 남아있다. 이때 이야기까지 하게되면 글이 너무 길어질 것 같아 각설하고 넘어가도록 하겠다.

제대 후 학교 선배와의 창업

보통 남자들은 제대 후 복학 한 첫 학기는 성적이 좋다고들 하는데, 이미 전공을 포기한 나는 크게 학교 공부에도 재미를 못 붙이고, 적당히 학고만 맞지 않을 정도로만 해야지 하는 마음가짐이었다. 그렇게 하고 싶은 것들을 찾다보니 노래를 좋아하던 나에게 음악활동을 하는 단체에 들게되었고, 거기서 마음 맞는 학교 선배와 음악 사업을 함께 하게 되었다. 아이템은 간단했다. 좋은 노래지만 낮은 인지도로 세상에 빛 한번 못보고 사라지는 음원과, 그럭저럭한 노래지만, 높은 인지도로 각종 차트 순위권에 들어버리는 노래들 사이에서 아무런 배경 지식 없이 오로지 음악으로만 내 취향의 노래를 찾는 서비스를 만들었었다. 일종의 블라인드 오디션을 모바일 서비스로 하는 아이템을 기획하고 실제 서비스 런칭까지 했었지만, 그때 마침 네이버의 ‘바이브’를 시작으로 다른 유명 스트리밍 사이트에서 이러한 같은 기능들을 넣기 시작했다. 지금 생각해도 나쁘지 않은 아이템이었다고 생각한다. 다만 좀더 공격적으로 유저를 모으고 홍보를 해서 먼저 시장 점유를 했으면 어땠을까 하는 아쉬움은 있는 그런 아이템이었다.
그렇게 첫 사업이 좋지 못하게 끝이나고 피버팅을 해서 다른 사업으로 회사에 매출이 나기 시작했다.

코딩 교육 사업

그렇게 시작한 사업 아이템이 교육 사업이었다. 특히 코딩 교육이 메가 트렌드로 뜨고 너도나도 아이들 코딩 교육을 하려는 붐이 일던 찰나, 우리는 교육이 가능한 공대생 3명이 있었고, 과 동기 후배 선배라는 강사 풀이 있었고, 대구에서 나름 네임밸류가 있는 대학의 학생들이었다.
그렇게 아무것도 없이 밑바닥에서 시작한 사업이 지금은 20명 가량이 되는 직원의 월급을 줄 수 있을 정도의 회사로 성장했다. 나 또한 작년까지만 해도 회사에서 나름 중요한 역할을 하던 창립 맴버였다.

퇴사

아무것도 없이 월세 30의 지하사무실에서 시작해 매출이 없으니 월급도 없이 일 했던 다섯명의 맴버들이 번듯하게 직원들 월급을 줄 수 있는 회사로 성장했다는 스토리는 겉으로만 봐서는 정말 큰 인간 승리로 보일 수 있다. 물론 열심히 일한 만큼 회사가 성장하는 모습이 눈에 띄게 보이니까 일하는 맛도 났고, 내가 이 회사의 처음부터 함께 했다는 자부심에 뿌듯하게 일을 할 수 있었다. 물론 대표님은 나보다 5배는 더 열심히 일 했을 것이다. 회사에서는 대표님이지만 사석에서는 형님이니까 함께 개인적인 자리에서 밥을 먹을 자리가 많았는데, 항상 예전 힘들었던 시절을 회상하며 우리 정말 열심히 했다고 자랑스러워 하며 더더욱 열심히 할 수 있는 힘이 된 적이 많았었다.
그게 3년 정도 지났을 때 체력도 멘탈도 약한 내게 번아웃이 왔고, 정신적으로 많이 힘든 시점이 왔다. 무작정 회사의 눈에 보이는 성장이 좋아서 살다보니 나도 모르게 심적인 여유가 없었던 것일까. 대표님께 내 ‘회사라고 생각하고 열심히 일했는데, 그게 내게 부담으로 다가왔던 것 같다, 이제는 내 회사가 아닌 남의 회사에서 일하고 싶다’며 두달간의 인수인계 후 좀 쉬고 싶다고 말씀드렸고, 대표님도 내 의견을 존중 해 주셨다. 그렇게 3년간의 나를 한층 크게 성장시켜주었던, 인생의 전환점이 되어 주었던 내 첫 회사를 퇴사하게 되었다.

취준

몇 달간 아무 생각 없이 모아 놓은 돈 펑펑 써대며 놀고 먹고 하다보니 이제 슬슬 취준을 해야겠다는 생각이 들었고, 어떤 분야로 취직을 할 것인가에 대한 고민 후 내린 결정은 웃기게도 21살에 그만 둔 컴퓨터였다.
솔직하게 말해서 처음에는 ‘요즘 개발자가 취직이 잘 된다더라’, ‘개발자가 돈을 많이 번다더라’가 시작이었다. 부정하지 않겠다. 다만 내가 공부 하고 싶었던 분야인 광고쪽으로 학부때 신문방송학을 부전공하며 공부할 때 데이터 마케팅을 공부하려 했다는 것이 생각이 나 처음에는 그쪽으로 공부를 시작했다. 지금처럼 웹 개발을 공부하지는 않았다. 데이터공학을 공부하기 위해 파이썬을 다시 공부했고, 데이터 전처리를 공부하던 도중 백엔드에 관심을 갖게 되었고, 웹을 공부해보자는 마음으로 일단 프론트를 공부해보자고 시작한 게 이 블로그다. 이렇게 보니까 되게 의식의 흐름이 내 쪼대로 흘러가고 있긴 한데, 애초에 나란 녀석이 인생은 내 하고싶은거 하고 살자는 마음이라, 내 좌우명대로 현재를 즐기기 위해 노력하며 살고있다. 20살때부터 8년간 장래희망이 4번 바뀌었다. 돌고 돌아 처음으로 돌아왔으니 뭐 3번이라고 하자. 2년 뒤 내가 갑자기 배우가 하고 싶을지, 인생을 어떻게 알겠는가. 어찌되었건 현재의 나는 내년 하반기 판교 입성을 목표로 학부 2학년 때로 돌아가 다시 공부하며 지내고 있다.

끝맺으며

아무 생각 없이 내 인생을 회상하며 글을 끄적여 내려가다보니 30분이 넘도록 글을 쓰고 있다. 이렇게 옛날을 회상하며 글을 끄적이다보니 짧지도 그렇다고 길지도 않은 세월을 살았지만 그 사이에 많은 우여곡절이 있었구나 하며 내 인생을 돌이켜 볼 수 있는 나름 소중한 시간이었다. 처음 시작할 때는 아무도 안 볼 글인데(아마 내 여자친구가 보지 않을까 싶긴 하지만) 대충 적다가 잠이나 자자는 생각이었는데, 내 인생 그래도 헛 살진 않았구나 하며 내 스스로를 토닥여 줄 수 있는 생각보다 굉장히 뜻깊은 시간이었다.
이 긴 글을 여기까지 보는 사람이 몇이나 될지는 모르지만 그대들은 대한민국 5천만 인구 중, 한 명의 20대 청년의 인생 요약본을 보았다. 이 글을 다 읽는데 5분은 걸릴텐데 과연 이 5분이 그대들에게 어떤 시간이었을지 모르겠다. 그저 세상엔 저런 애도 있구나, 했을 수도, 인생 즐기면서 살다가 나락가는거지, 했을 수도, 도전 하는 모습이 멋있다, 했을 수도. 어떤 반응이던 나라는 사람의 인생을 보는데 5분이라는 시간을 투자한 그대들이, 나를 한심하게 보았다면 반면교사로, 나를 대단하게 보았다면 롤모델으로, 어찌되었건 이 5분이 값진 시간이 되었으면 한다. 내가 아무 생각없이 끄적이다보니 생각보다 뜻깊은 시간이 되었던 것 처럼.
오랜만에 사색에 잠겨 끄적였더니 새벽감성도 느끼고 좋은 시간이었던 것 같다. 앞으로 종종 일기처럼 생각 정리하는 시간도 갖곤 해야겠다.

Continue reading

[Data Structure] Linked List

Singly Linked List 단일 연결 리스트


  • 순차적으로 연결된 공간에 데이터를 나열하는 배열과 달리 링크드 리스트는 떨어진 곳에 존재하는 데이터를 연결해서 관리하는 데이터 구조
  • 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원해 줌
  • Node = data + link


노드(Node)

  • 데이터 저장 단위 (데이터값, 포인터) 로 구성

포인터(pointer)

  • 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간

Continue reading

Pagination


© 2021. by hminkim