본문 바로가기

code-states

[code-states][we-win] 26일차~33일차 - underbar, recursion, pass me

으아아아아아

 

그 동안에 대한 간략한 개요

정말 어마어마한 나날들이었다, 정신이 하나도 없었다

어떻게 지나갔는지는 내가 두들겼던 코드와 커밋했던 git log 를 봐야

'아 내가 이런 일을 했구나' 하고 겨우 알 수 있을 정도다

저 기간동안 내게 있던 일은 underbar, recursion 과제와

지금 하고 있는 코스(프리코스) 를 마치고, 그 다음 레벨의 코스(이머시브 코스)에 넘어가도 되는지를

진단(assesment) 하는 pass me 테스트를 해결해내는 과정들이었고

상술한 두 과제도 어려웠으나

프리코스에서 이머시브 코스로 넘어가도 되는지에 대한 평가인 pass me 가 상당히 힘들었다

pass me 는 내가 공부해온 지식을 전부 쏟아서 보는 진단평가

(다시 말 하지만, grading 을 하는 evaluation 이 아니다, 진단을 위한 assesment 이다)

24시간의 제출기한 중, 밤을 샌 끝에 20시간 정도를 쏟아서 겨우 통과했다

그 와중에 척척 풀어서 7시간 안에 올린 사람들을 보면서 자연스레 내 스스로의 부족함도 알게 되었다

대단한 사람들이 참 많았고, 대단한 사람들이 있는 곳에서 공부할 수 있다는 것에 대해서 감사하기도 하였다

방금까지도 밤을 새서 underbar, recursion,

그리고 coplit 에 있는 알고리즘 문제들을 전부 해결하고 왔다

테스트 결과와는 별개로, 여태까지 주어진 과제들을 전부 해결해야만 이머시브 코스를 수강할 수 있는데

오늘은 너무 힘들고 피곤해서, 좀만 이따가 한다는 마음을 먹어서

그렇게 밀린 것들을 뒤늦게나마 하고 왔다

오늘 안으로 이머시브 코스를 수강할 수 있는지의 여부가 발표가 날텐데,

나는 내가 할 수 있는 것을 다 했기에, 그냥 내가 할 수 있는 것들에 충실하고자 한다, TIL 작성이 그것이고

그래서 작성하려고 한다

오늘 적을 것은 세 개

1. underbar

2. recursion

3. pass me

 

 

 


 

 

 

Underbar

사실 이미(1편) 적은 적이 있는(2편) 포스팅이다

그러나 사실 저 2편 안에 해결을 못 한 부분이 있어서

늦게나마 마저 해결했던 과제 중 하나

새로운 개념은 아무래도 없었다

재귀를 연습하기 위한 문제들 중 약간 어려운 문제들을 푸는 느낌이었는데

해당 단원에서 정말 내가 중요함을 뼈저리게 느꼈던 부분은

스코프 / 함수의 인자 전달 / 배열 메소드(map, fliter, reduce) 의 능숙한 사용

그리고 익명함수 - 즉시실행함수의 사용 (더 나아가자면 Arrow Function 의 사용)

이었다

 

 

 


 

 

 

Recursion

underbar 에서 배운 재귀의 본격적인 활용이다

수능 수학으로 칠 때 underbar 가 쉬운 4점 기출이라면

recursion 은 어려운 4점 기출같은 느낌

이 곳에서는 앞서 배운 것들에 더해서

내가 구현해야 할 기능들이 있다면 그것을 함수로 구현하는데

어떤 기준을 가지고 함수로 쪼개야 하는지, 어디까지 쪼개야 하는지

그리고 그렇게 쪼갠 함수를 underbar 에서 배운 것처럼

서로서로 티키타카가 가능하게끔 코드를 짤 수 있는지

문제 해결을 위해서 이것들이 정말 중요했다

특히 코드가 복잡해 질수록 중요한 건 psuedo code, 즉 의사코드의 작성법이다

과장 조금 보태서 솔직하게 말하자면 의사코드가 반, 아니 반 이상 먹고가는 거 같다

내가 어떻게 할 지 대략적으로 방향을 잡고, 각 케이스를 개발자 도구같은 곳에 바로바로 체크해보고

그렇게 첨예한 의사코드를 완성하면 실제 코드까지도 금방이다

작성했던 psuedo code 중 하나

특히 이번에 만났던 페어 분께서 상당한 실력자여서

의사 코드를 작성하는 방법을 아주 제대로 배울 수 있었다

가장 기억에 남았던 점은, 한 문장에 하나의 기능을 담는 것

그렇게 해서 의사 코드의 명시성을 올리는 것

예를 들자면 '빈 배열을 선언한다' 라는 우리가 흔히 쓰는 문장을

'변수를 선언한다', '그 변수에 빈 배열을 할당한다' 라는 식으로 나누는 것이다

저 정도에서야 '굳이 저렇게 쪼갤 필요가 있나?' 싶었지만

조건문이 들어가고, 반복문이 들어가고, 다양한 메소드가 들어가는

그런 다양한 기능들이 본격적으로 튀어나오는 순간부터는

저렇게 한 문장에 하나의 기능을 담는 식으로 명시성을 높였냐, 그렇지 않느냐의 차이가 아주 극명하게 보인다

의사 코드를 작성하는 방법 뿐만 아니라, git 에 접근 가능하도록 사용자를 추가하고

push - pull 을 통해 핑퐁을 치듯 서로 공동작업을 하는 것부터

node.js 를 설치해서 크롬 개발자 도구까지 갈 필요 없이 vscode 안에서 편하게 디버깅을 하는 방법 등등

정말 배운게 많았지만 (너무 감사드린다)

아무래도 가장 인상깊게 남았던 가르침은 저 명시성을 올려주는 유사코드 작성시의 핵심요약 같은 이야기가 아닐까... 한다

 

 

 

 


 

 

 

Pass Me

말 그대로 여태껏 배운 것들의 총 집합

단순히 '이 메소드는 뭐야', '이 개념은 어떤 개념이야' 라고 알기만 해선

절대 무난하게 풀어낼 수 없다

"이 개념은 실제로 어떻게 활용할까" 에 대해서 스스로 찾아보고

그리고 "나는 이런 상황이 오면, 이 기능을 통해서 풀어낼 수 있겠다" 라는 자신이 들 때까지

콘솔에 띄워서 연습해보는 과정을 거쳐야만 무난하게 풀어낼 수 있는 문제들이었다

특히 크게 느꼈던 건 '내가 안다' 라는 사실과, '내가 이걸 능숙하게 사용할 줄 안다' 라는 사실은

아주 명확히 다르다는 점이다

문제 해결을 위해서 지식을 활용하고 결과물을 만들어 내야하는 개발자라는 직업의 특성상

'내가 안다' 수준에서 절대 공부를 끝내지 말고, '내가 이걸 능숙하게 사용할 줄 안다' 까지 가야

비로소 '그 부분을 공부했다' 라고 말할 수 있다 라는 생각을 하였다

사실 개발자 말고도 세상에 다른 어떤 일들이 안 그렇겠냐만...

 

 

 


 

 

 

 

문제를 풀며 모르는 부분, 더 알아야 하겠다는 부분을 중간중간 정리하였다

 

 

문제를 풀면서 내가 부족하다고 느낀 점들, 그리고 더 알아야 할 것 같단 생각이 든 점들을 정리하였다

내가 이머시브 코스로 계속 공부가 가능하다면

코스를 들어가기 전 내게 지금 남은 시간은 얼마 남지 않은 오늘, 그리고 주말 이틀인데

주말동안은 조금 건강관리를 하면서 저기 적은 내용들을 집중 공략한 총 정리 포스팅을 작성해 볼 생각이다

TO DO LIST, 절반을 마무리했네요

 

하고싶은게 소박하지만 몇 가지 있다

먼저 이틀 연속 밤샘 작업을 했더니 몸이 조금씩 이상해져서 일단 잠을 푹 자고 싶다

읽고 싶은 책도 많이 밀려서 책들도 읽고 싶고

주말에 있는 투자 모임도 이번 주엔 참석 신청했고

뭔가 훈련소 외박 나오면, 군대 휴가 나오면 뭐 할지 꾹꾹 눌러담는 느낌

부트캠프라는 이름에 참 걸맞는 한 달이었다

개괄적인 포스팅, 끝!

 

 

 


 

 

 

여담

혹시 코드스테이츠에 지원하시려고 후기글들을 찾아보시는 분들이 있다면,

아니면 다음 기수 프리코스를 하시는 분들이 캘린더를 보고

'대체 이 pass me 는 뭐지, 어떻게 대비해야 하는거야!' 하고 막막하신 분들이 있다면

너무 걱정하진 마세요

약간 부족한 편인 제게 꽤나 어려운거지,

저 말고 대부분 사람들은 일곱시간에서 열 시간 남짓을 투자하셔서 멋지게 풀어내셨답니다

문제는 일곱문제

말 그대로 지금까지 거쳐온 과정들에서 배운 지식들을 아는지,

그리고 그 지식을 통해 배운 것들을 내가 활용할 수 있는지

마지막으로 그 지식들을 서로 엮어서 사용이 가능한지에 대해 스스로에게 물어보고

저 질문을 던졌을 때 부족한 점이 있다는 생각이 든다면 그 부분을 구체적으로 찾아내서 보완하세요

위에 적은 내용 그대로입니다

그렇다면 테스트를 수월하게 통과하실 수 있을 겁니다

저는 그게 잘 안되어서, 그렇게 하지 않아서 상당히 고생했습니다

부디 저를 반면교사 삼아주시길 바라는 마음에

제 실력과 제 심정을 솔직하게 남깁니다