본문 바로가기
회고/SW 사관학교 정글 5기

Week04. 알고리즘 주차를 마치며 | 시작이 반이다 !

by Lizzie Oh 2022. 10. 20.

어느새 4주 간의 알고리즘 주차가 끝났다 ㅠㅠㅠㅠ

 

그 간의 생활을 성과로 표현하면 아래 스크린샷 만한 게 없지... 

ㄴㅐ가... ㄱ...골드라니!!!!!

 

'백준 골드'라는 키워드로 구글링을 해보면 대개 골드 달성에 2달 ~ 6개월 이상 소요되는 거 같은데, 정글에서 알고리즘 주차를 시작하고 3주 반(4주차 중간)이 되었을 때 골드를 찍었다. 나는 커리큘럼 상의 문제 중에서 난이도가 높은 몇 문제들은 건너뛰었는데도 골드를 달성했고, 문제를 다 푼 친구들은 이미 3주차에 골드를 가볍게 찍었다. 지난 4주간 376번의 답안 제출과 숱한 틀렸습니다, 시간초과, 메모리초과 등등을 걸쳐 145번의 맞았습니다 를 얻었다 ㅠ 

백준 제출 누르면 손 모으고 기도하게 되는 거 .. 나만 그런거 아니더라.. 우리 반 다 그러고 있더라 ^^;

 

자 그러면 이런 quantitative figures 말고, 지난 일주일 그리고, 지난 4주간에 대한 나의 소감은...?

 

W04 | 지난 한 주

W4에서는 처음으로 문제 수 앞자리가 1 이었다. 총 15개의 DP / Greedy 문제를 풀어야 했다. W3 을 끝내고 눈물을 한 바가지 쏟으며 (지난 주 회고 참고) 공부 방법을 전환해야겠다고 다짐했기에, 문제는 끝까지 다 풀 수 있었다. 30분 이내에 풀지 못하면 답안을 참고해서 공부하고, 공부한 뒤에는 내 생각으로 다시 코드를 짜 보는 식으로 공부했는데, 생각보다 좋은 점이 많았다. 오히려 1주차부터 이렇게 공부했으면 더 얻어가는 게 많았을 텐데 하는 아쉬움도 들었지만, 지난 주차들에도 지난 주차에서만 얻어갈 수 있는 것들을 많이 얻었겠지..!

 

이번 주에 배운 DP/그리디는 꽤나 재밌었다. 사실 그리디는 풀면서도 약간 '이게 된다고..?' 라는 생각이 들었다. '현재의 최선의 선택이 결과적으로 최선의 선택이 된다'는 게 쉽사리 받아들여지지는 않는다. 그리디로 문제를 해결할 수 있는 조건들에 대해서 좀더 공부해보고싶다. DP의 경우에는 특정한 방식으로 문제를 정의하고, 하위 문제로 분할하면 너무나 복잡한 문제가 마법같이 해결된다는 게 신기했다. 물론 그 점화식을 생각해 내기가 쉽지 않지만..!  일단 생각해내면 이후부터는 금방 해결이 된다! (물론 외판원 문제처럼 방법도 어렵고 구현도 어려운 문제도 있었다... 비트마스킹...wow..) 

 

아쉬운 점은 이번 주 문제들은 꼭 블로그에 다시 정리하고 싶었는데 몇 문제밖에 기록하지 못했다. 이번 주에 읽어야 하는 CSAPP 3장이  150페이지는 돼서 도저히 정리할 시간이 안 났다.. 그래도 예상치 않게 백준 풀이 1등이 된 행렬곱셈문제는 블로그에 정리해내서 기쁘다! (무려 4시간동안 정리한 글..!) 

 

CSAPP 3장은 어셈블리어에 대한 내용인데, 처음에는 읽어도 당최 무슨 말인지 모르겠고 그냥 수면유도하는 책 같았다. 책에서는 C언어 소스와, 이 소스가 컴파일된 어셈블리 코드를 비교하면서 설명을 진행하는데 C언어 조차도 아는 게 없다보니 무슨 코드가 어떻게 컴파일 된 건지 알 수 없었다. 이건 진짜 아니다 싶어서 밀리의 서재에 있는 C언어 책을 하나 골라서 전체적으로 조금씩 읽었다. 나는 자바스크립트, 파이썬 같은 인터프리터 언어만 경험해봤기에, C언어가 어떤 구조를 가지고 있고 어떤 특징이 있는지, 포인터란 무엇인지, 어떻게 실행되는지 정도만 알게 되었는데도 너무 새로운 지식들이라 큰 도움이 되었다. C 언어 책을 간단하게라도 읽고 다시 CSAPP 3장을 처음부터 읽었더니 새로운 부분이 보이면서 더 이해가 잘 된다고 느꼈고 심지어 일부 페이지는 재밌다고 느껴지기도 했다! 

 

내가 공부해 온 문과 과목들과 SW과목들의 공부 방식은 분명히 다르겠지만, 또 이렇게 책을 여러 번 반복해서 보면 처음에 보이지 않았던  부분들이 보이고 더 깊이 이해가 되는 거 보면 공부의 본질적인 측면은 분야에 관계없이 같다는 걸 느낀다. (그렇지만.. 아직 CSAPP 책을 다 못 읽...어서 얼른 이 회고를 끝내고 빨리 못다한 3장을 읽으러 가야한다!!!!!!!!!!) 

 

 

W01-04 | 4주간의 알고리즘 주차 

아득하기만 했던 알고리즘 마지막 주차까지 끝났다. 하루 하루가 쉽지 않았는데 😭 4주는 순식간에 끝나버렸다. 아마 정글도.. 마찬가지로 눈 깜짝할 새에 끝나있겠지?

 

알고리즘 주차를 끝난 지금의 소감은 사실.. '알고리즘 주차 한 번만 더 하고싶다!!!!!' 이다. (응?ㅋㅋㅋ) 사실 많은 주제들을 매일매일 (나름의) 최선을 다해서 공부했지만, 제대로 공부하지 못하고 넘어간 부분들이 아직도 많이 남아있는것 같아서 아쉽당... 예를 들면 1주차의 정렬같은 경우 버블정렬, 힙정렬, 카운팅 정렬 말고는 구현을 못해봐서 셸 정렬, 퀵 정렬, 병합정렬 같은 것들에 대해서도 알고 싶고, 2주차의 스택. 큐, 힙큐 같은 경우도 제대로 클래스를 사용해서 다시 구현해보고 싶고... !! 시간이 없어서 다 못 풀고 넘어갔던 문제들도 도전해보고싶고 다루었던 것들도 한번씩 다시 정리해보고 싶은 욕심과 아쉬움이 생긴다..! 

 

원래는 알고리즘 주차가 끝나면 한 번씩 다시 복습하고 문제들도 다시 풀어보려고 했는데, 오늘 5주차 발제 하고 나니깐 택도 없는 얘기라는 걸 깨달아버렸다. 정글...ㅋㅋㅋ 더 어려워졌으면 더 어려워졌지 절대 더 쉬워지지 않는ㄷㅏ.. ㅎ 그래도 분명한 건 지난 4주간 전례 없는 성장을 했다는 것이다. hello world를 프린트하는 문제로 시작했던 알고리즘 주차가, dfs+dp+bitmasking으로 풀어내는 외판원 순회 문제로 끝났다는 것만 봐도...ㅎ

 

아무튼, 아쉬움이 남는 부분들도 있지만 정글이 아니었다면 이렇게 밀도있게 이 많은 내용들을 짧은 시간 내에 다뤄보지 못했을 것이다. 적어도 이제 대표적인 알고리즘 주제들에는 어떤 것들이 있는지를 알게 되었고, 적어도 내가 뭘 모르는지는 아는 단계가 되었다는 점에서 크게 성장했다고 생각한다. 알고리즘 주차는 끝이 났지만 어떠한 방식으로도 나의 자료구조/알고리즘 공부는 계속 될 것이기에!!! 지난 주차들에 대해 너무 아쉬워말고 앞으로의 한 주 한 주들에 집중하면서 후회 없는 정글 생활을 보내야 겠다..! 

 

이번 주 신체 / 마음 기록도 간단히!

💡 신체 
지난 한 주동안 방에서 씼기 전에 슬로우버피, 스쿼트, 슬로우 마운틴클라이머, 크로스 런지, 스티프 데드리프트 등 !! 열심히 운동했더니 인바디 결과가 꽤 좋아졌다. 나름 과자도 조금은 줄이고 식사할때도 의식적으로 고기보다는 야채를 많이 먹고 했더니 근육량은 늘고 지방량은 줄었다. (몸무게는 늘었지만 솔직히 여기서 몸무게 안 느는게 말이 안된다고..ㅎ?)
사실 체성분도 체성분이지만, 어쨌든 여기서 끝까지 더 열심히 공부할 수 있는 체력을 기르기 위해서 운동을 시작한 거니까 앞으로도 거르지 말고 매일 잘 운동해나가고 싶다!!! 

 

💡 마음
지난 주가 너무 극악이었어서 상대적으로 이번 한 주는 마음이 평-온한 편이었다. 이번 주에 외판원문제를 이해하면서 진짜 이해를 포기하고 싶은 순간이 있었는데, 그 순간에 정글 첫 주에 다짐했던 말이 떠올랐다.

'순수한 배움의 기쁨을 느끼자' 

그때 다시 한번 마음을 다잡았던 것 같다. 그래 나 여기에 그냥 문제를 풀어내려고 온 게 아니지, 문제를 이해하기 위해 노력하는 이 과정 자체에서, 생각하는 즐거움을 느끼려고 왔지. 라는 생각을 하게되자, 어려운 문제를 고민하는 순간이 확실히 덜 고통스럽게 느껴졌다. 아마 앞으로의 주차들은 더 어렵고 더 힘들겠지만, 이 마음을 잘 간직하면서 끝까지 가보자고오오-! 

 

더 알고싶다... 이미 열심히 알아가고 있지만 더 격렬하게 알고싶다....

알고시풔..!!!!!

C언어 완전 잘 알고싶다.. CSAPP로 공부하고 있는 어셈블리어도 잘 알고싶고, 매번 내용은 잘 모르고 명령어만 따라서 쓰고 있는 깃&깃헙에 대해서도 더 제대로 알고싶고, 마찬가지로 역시나 명령어만 따라 치고 있는 리눅스도 잘 알고 싶다... 뿌엥 .. 

 

대망의 C 언어 시작

이번 주 부터는 대망의... C 언어...를 시작한다. 이번 주 발제 문서에 적혀있던 말이 무시무시하다. 

 

코치님.. 왜 겁주세요.. 제가 그 초짜라구요..

 

무섭다. 근데 솔직히 기대도 된다. 발제문서를 보니 C언어는 컴퓨터의 성능을 최대한 끌어낼 수 있는 언어이고, C 언어를 제대로 쓰려면 CPU, memory, I/O로 구성된 컴퓨터 구조, 즉 폰노이만 구조를 이해해야 한다고 한다. C언어를 배우면서 컴퓨터 동작 원리를 더 잘 이해할 수 있게 되고, 코드에 대해 보다 정확한 이해를 바탕으로 코드를 작성할 수 있는 능력을 키우고 싶다! 

 

여담이지만 사실 개발 공부 처음 시작하고나서 취업을 위해 자바스크립트+NodeJS를 하나, 자바+스프링을 해야 하나, 파이썬+장고를 해야 하나 고민을 많이했었다. 이 중에서 자바+스프링을 가장 하고싶었지만 러닝커브가 높다는 이유로 공부하기를 망설였는데, 이보다 러닝커브가 더높은 C를 배우게 될 줄은 몰랐다. ㅋㅋㅋ 현존하는 부트캠프 중에 C를 하는 곳도 본적이 없다. 사실 학부/대학원 과정이 아니면 C 언어를 배울 기회가 별로 없는데, 그래도 이 곳에서 저언어인 어셈블리와 고언어 중 가장 저언어인 C 언어를 공부하고 있다니.. ! 힘들어도 기쁜(?) 커리큘럼이다..! 

 

좀전에 막 ubuntu ec2를 생성하고 개발환경을 설정했다. 오늘부터 펼쳐질 3주간의 C언어 주차는 어떤 시간들이고, 3주 후에 나는 또 어떤 생각을 하고 있을까! 최선을 다해 몰입하고 즐겁고 기쁜 마음으로 배워 나가자자ㅏㅏㅏ!!!!!!!! 빠이띵!!!!!! 

 

 

TMI

1. 나.. 우리반 자타공인 맥시멀리스트로 등극 😉 목 어깨 손목 허리를 보호하기 위해 이것저것 모으다보니 .. ? 

2단 독서대 + 칼디짓 독 + 아이패드(펜슬)+ 리얼포스 r2 + 팜레스트 + 매직마우스 + 손목 받침대 ㅎ

 

2. 여기 있다보면 그냥 귀여운것들로 힐링하게 된다.. 그런의미에서 마로 포스트잇은 너무 힐링템이야... 그나저나 ssh로 서버 접속하는 명령어 나 도데체 언제까지 못 외워..?ㅎ 

 

 

그러면 회고 끝! 다음주 회고때 만나요!

 

 

반응형

댓글