WEEK01 : 계획 및 일일 회고
알고리즘 1주차
-재귀
-계산복잡도
-정렬
-완전탐색
-정수론
3.4(목) - 갑자기 생각나서 적어보는 W00 미니 플젝 발표 회고
- 0주차 미니 프로젝트 최종발표를 내가 했다. 다들 안하고 싶어하시는 것도 같고,,, 양심 상 내가 하는게 맞는 것 같았다.
- (정확히 뭐라고 하셨는 지는 잘 기억 안나지만...) 대표님께서 말씀하시길,, 발표는 청중이 원하는 TPO에 맞게 해야한다고 하셨다. 모든 팀이 구현했을 법한 것들(로그인 기능 등)은 생략하거나 최대한 간소화 하는 것이 좋았겠다. 더불어, 발표자가 가장 보여주고 싶은 것, 자랑하고 싶은 것 등을 가장 먼저, 강력하게 보여주는 것이 중요하다고 하셨다. 즉, 발표 자체가 두괄식이어야 하지 않을까 싶다. (내가 제일 못하는 것)
- 우리 팀 프로젝트의 가장 까다로운 부분이자, 보여주고 싶은 부분은 아무래도 '랭킹 조회 페이지'를 구현한 방식이었을 것이다. 한 팀원 분께서 이 부분을 해결하느라 꽤나 애먹으셨는데, 만약 다시 발표를 한다면 이 부분을 강조하게 될 것 같다.
- 우리 프로젝트에서 내 담당이었던 로그인/회원가입 기능에서는 권장 사항이었던 JWT 토큰 인증 방식을 사용하지 않았다. 세션을 쿠키에 저장해서, 그 세션으로 로그인 정보를 기억하고 이용하는 방식으로 구현했다. 나중에 알았지만, 재밌는 사실은 우리 팀만 해당 방식을 이용했었다! 미리 알았더라면, 발표에서 강조할 만한 부분이었을 것 같다.
- 손은 덜덜 떨리고, 시선도 청중들을 잘 향하지 못했던 것 같다. 아무래도, 내가 아직은 자신있는 분야가 아니어서 인 것 같다. (공청회에서 정견 발표하던 때가 생각나버렸다.) 그래도 팀원분들과 연습했을 때보다 오히려 나았던 것 같긴하다. 마치고나서 팀원분들이나, 회식 시 다른 팀분들이 잘 했다고(?) 해주셔서 기분은 좋았다!
- 대표님이 다음 팀에서 무조건 질문 하나를 하게 하셨는데, 내가 받은 질문이 전날 밤에 예상 질문으로 생각했던 그대로 였다. (내 기준) 정말 확실하게 대답을 할 수 있어서 다행이었다. (역시 항상 준비/대비가 필요하다.)
3.3(금)
- 전날 회식 때문에 숙취로 15시 다되어서 출근했다.
- 스프레드시트 기초 문제 다 풀었다.
- 수학 문제들 풀었다.
- 컨디션이 구리기도 했지만, 다음 날 있을 일을 생각 못하고 조금 여유부린 것 같다.
3.4(토)
- 4-1학기 자료구조 할 때도 재귀 때문에 어려웠던 기억이 다시 나버렸다.
- 브루트 포스 / 백트래킹 문제들도 그렇고 결국 재귀 때문에 안된다.
- 내일(일요일)까지 재귀 함수 공부를 다시 해야할 듯 하다.
- 유튜브, 블로그 봐도 이해 안되고 머리가 너무 아프다. 12시 쯤 조금 이른 퇴근.
3.5(일)
* '재귀' / '백트래킹'을 정복해보자
* 금, 토에 푼 문제들 코드 리뷰 / 팀원 분들 풀이도 참고 / 다시 풀어볼 것들 다시 해보기
* N-Queen / Z 문제 일단 제출은 해보기
===> 이것만 해도 좋겠다.
- 재귀 자체에 대한 이해는 많이 높아진듯 하다.
- 백트래킹, dfs 방식은 아직 문제 by 문제인 듯하다.
- Z는 결국 제출도 못했다.
- 저녁에 막내이모네와 관평동에서 밥을 먹었다.
- 피로누적이 심하다. 역시 체력이 쓰레기인 것 같다. 커피 등 먹는 것 관리도 좀 해야할 듯 하다.
- 내일부터는 아침 학식을 꼭 먹을 수 있도록 하자.(9시에 출근하겠다는 의미!)
3.6(월)
* Z 일단 제출 해보자 O
* 계산복잡도에 대한 공부 깊게 하기 O
* 공동 노션 추가문제 : 백트래킹 / 재귀 문제들 풀고, 더 넓게 이해해보자 O
* 정렬 이론 공부, 다른 문제도 찾아서 풀어보기(여러 종류 정렬들로 찾아보기) X
* 시간되면, csapp 1.4 범위까지 읽어보기 X
=====================================
- 완전 탐색 류의 문제가 나왔을 때, 백트래킹할 필요가 없으면 단순하게 itertools 라이브러리로 구현하면 될 것 같다는 인사이트가 생김
- 백트래킹을 해야한다면, 대부분 dfs의 형태로 풀이가 가능해보임 / 어느 정도 감은 오는데, 결국 문제 제출을 하는 데에 있어서는(답이 나오는 것에서는) 문제 by 문제가 조금 있다. recursive case에서 재귀 함수를 거쳐 다시 base case로 오는 것에서 많은 연습이 필요할 것 같다. (쓰면서도 뭐라는 지 모르겠다.)
- 시간복잡도에 대해서 정말 감으로만 생각했던 것 같은데, 구글링을 통해 내용 정리를 하고 블로그 글을 작성했더니 조금은 알 것도 같다. 잘 모르겠는 개념을 블로그에 정리하는 습관을 들이면 확실히 좋을 듯.
- 아침을 못 먹을 뻔했다. 먹었으니 됐긴 하다. 9시 전에 무조건 먹으러 가는 걸로...
- 랜덤 런치 조... 재밌었다. 점점 아는 사람 비중이 높아지는 것 같다. 개소리가 점점 늘어나고 있다. 좋은 현상인 것 같다.
3.7(화)
* 아침 오자마자 n&m(2) 백트래킹으로 다시 해보자 O
* 아침에 3.6에 못한 정렬 공부 다시 하기. 이론적인 것부터, 다른 정렬 종류들, 스프레드시트 문제도 다시 풀어보고 다른 풀이도 생각해보기 O
* csapp 읽기 (~1.4 챕터) X
* 재귀, 백트래킹 추가 문제들 + 시트문제들(다시풀기) 계속 반복해서 익히기 O
====> N과 M 시리즈로 백트래킹 & itertools 풀이 둘 다 반복 연습하기!!!!!!!
- N과 M 시리즈를 미친듯이 풀었다. 순열/조합 유형의 문제인데, DFS 기법을 통해 백트래킹으로도 풀 수 있다. 조금씩 익숙해지는 것 같아 기분이 좋다. 고1, 2 때, 쎈 수학을 미친듯이 반복해서 풀었던 기억이 떠오르는 것 같다. (10년도 더 전...)
- 오전 10시에 알고리즘 시험 대비 리뷰어 배정 및 연습을 해보았다. 아마도 우리 반에 나만큼 Git에 대해 모르는 사람은 없는 것 같다. 대부분 헤매시는 것 같긴 했지만, 난 정말 아무것도 모른다. 깃에 대한 공부를 해야겠다. 공부할 것이 늘었다.
- 머리 자르기 전에, 기숙사에 잠시 들른다는게 그냥 누워버렸다. 마치 화양동 자취방 매트리스에 누워있는 것 마냥 무기력하게 두 시간을 푹 쉬었다. 미친놈
- solved.ac에서 알고리즘 쌉고수 형인이를 라이벌로 등록했다. 기다려라 박형인. (미친놈) 형인이가 solved.ac 여러 팁들을 알려주었다. 알고리즘이 조금 재밌어지는 것 같기도...?
3.8(수)
* 오자마자 N n M (10) dfs로 풀어보기. itertools로 풀이한 것도 다시 보기. O
* 아침에 와서 Git 공부하기 O
* 재귀 / 백트래킹 스프레드시트 문제들 재풀이, 안되는 것 계속 반복해서 보자 O
* 시트문제들 '수학' 파트도 한 번씩 다시 풀어보기
* 못 풀었던 문제들 (N퀸, Z 등) 연구하기 X
* 자러 가기 직전 1시간 정도는 itertools 사용법이나, DFS 및 재귀 방법론에 대해서 원론적인 복습하고 들어가기!
===> 1주차 마무리 잘 하자! (시험 대비는 덤)
- 시트 문제인 외판원, 연산자 끼워넣기 등 문제들에 대한 풀이가 계속 안된다. 백트래킹으로는 어떤 식으로 접근해야할 지는 감이 오는데, 결국 마무리가 안된다. itertools를 써서는 오히려 더욱 안된다. 어제는 N과 M 시리즈를 풀면서 많이 발전한 것 같았는데, 다시 무언가가 내 마음을 꺾으려한다.
- 시험에 대한 부담감도 있는 것 같다. 제대로 된 평가를 하지 않는다. 난 여기 낙하산으로 왔다. 남들 신경쓰지 말고, 내 성장에만 집중하자. (자라나라 도토리 도토리)
- Git에 대한 문서를 좀 보기는 했는데, 여전히 잘 모르겠다. 더불어, 이런 공부든 csapp를 읽는 것이든 효율적으로 시간을 사용해서 사이드로 공부를 해야하는데, 잘 안된다. 효율적으로 시간을 쓰는 것에 대해 연구해서 보완하자.
- 2시간 정도 늦잠을 잤다. 사실 크게 보면 별 거 아닐 수도, 혹은 오히려 좋은 것일 수도 있다. (체력 관리 차원에서) 하지만, 룸메가 나가는 것을 보고도 당연히 일어났어야 했는데, 몸을 일으킬 의지가 없었던 것 같다. 자취할 때보다야 뭐 훨씬 의지적이고 발전적인 인간이 되고 있지만, 더 노력하고 더 마음이 강한 사람이 되자. 내년이면 서른이다. 정신 차리자!