TIL 시작하는 이유
우선 TIL (Today I Learned)라는 기록 문화?를 예전부터 알고 있었는데 실천을 하고 있지는 않았다.
난 뭔가 머릿속으로 납득이 되기 전까지는 정말 동기부여가 1도 안되는 사람이다.
이 태도의 단점은 그냥 무작정 해보고 나중에 그 이유가 납득이 되는 일도 많은데, 그 기회를 놓치게 된다는 것이다.
다시 본론으로 돌아와서, 아까부터 TIL을 써야지 써야지 하다가도, 여러 의문들이 꼬리에 꼬리를 물었다.
“Today를 기준으로 배운것들을 적으면 나중에 다시 찾아서 보기 힘들지 않을까?”
“보여주기식 아닐까? 이런거를 적느라 오히려 에너지를 뺏기지 않을까?”
위 영상을 다 본 것은 아니고 스킵하면서 보다가, 타임로그 부분을 보고 직감적으로 TIL의 순기능을 알게 됐다.
공부한 것을 나중에 다시 찾아보는 이점도 있겠지만, 무엇보다 오늘 무엇을 배웠는지에 대한 객관적인 메타인지가 가능할것이란게 가장 큰 점일 것 같다.
‘단순히 공부를 열심히 한 느낌’
혹은
‘뭔가 많이 배운 느낌’
이러한 추상적인 느낌을 배워서 실체적인 문체로 무엇을 배웠는지에 대한것을 적어나가면 본인에 대해서 한층 객관적인 파악을 할 수 있을 것이다.
역시 오늘 적으려고 하니 나는 오늘 생각보다 많이 공부하지 않았구나 라고 알게되었다.
여기서부터 본격적인 TIL
알고리즘: 투포인터
‘알고리즘 2559번 수열’ 을 풀었다.
투포인터는 연속적으로 나열되어있다는 (ex. 수열) 가정하에 사용할 수 있는 기법이다.
투 포인터는 수의 나열이 연속적이라는 특성을 활용한다.
여러 응용 방법이 있지만, 공통적인것은 이름인 ‘투 포인터’에서 알 수 있듯, 반복문을 돌릴 때 두 인덱스 위치에서 조건에 따라서 위치를 바꿔주면서 계산을 해주는 것이다.
N가지의 연속된 수들에서 연속된 K개의 수의 부분합이 제일 큰 값을 찾으려면 for문 2개를 중첩해서 부분합을 구해주는 방식을 떠올릴 수 있지만 이는 O(NK)의 시간복잡도를 가지고 있고, 이 방식으로 풀려고 하면 시간 초과가 나게 된다.
이 접근 방식에서 속도를 갉아먹는 부분은 ‘다음 부분합은 그 이전 부분합에서 했던 계산을 중복해서 한다는 것’이다.
이를 타파하기 위해, 투포인터를 활용해서 오직 하나의 for 문안에서, 부분합을 계산하고, 다음 부분합을 계산할 때는 그 이전 index값을 빼주고, 다음 index값은 더해주는 방식을 활용해면 O(N) 방식으로도 문제를 풀 수 있다.
CSS
오늘은 ‘인프런’에서 잔재미코딩님께서 강의하시는 **풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]에서 CSS부분을 복습했다.**
근데 확실히 이미 알고 있던 부분이 많아서 보는 내내 집중력이 떨어졌다.
그래서 다음부터는 앞 강의들보다는 뒷 강의로 들어가서 어려운 부분을 보고, 거기서 모르는게 나오면 앞으로 돌아가서 찾아보는게 나을것같다는 생각이 들었다.
box-sizing이라는 속성과 그 값으로 가질 수 있는 content-box, border-box에 대해서 배웠다.
이에 관해서는 따로 게시글을 정리해서 올렸다.
회사 일
회사 박사님으로부터 제안서에 들어갈 내용 중 개발자 입장에서 적어야 되는 내용이 있다고 적어서 보내달라고 나에게 요청하셨다.
그래서 지금 회사에서 개발하고 있는 모델링 어플리케이션을 어떤 언어 (Python)), 프레임워크(Flask, Dash)를 사용하고 배포(Elastic Beanstalk)는 어떻게 하는 식의 내용을 정리해서 보내드렸다.
적고나니 오늘 공부한 것들이 참 적은 것 같다.
안타깝기도 하고, TIL의 필요성을 더 크게 느끼게 되었으니 잘 됐기도 하다.
내일부터 본격적으로 잘해보자.