첫번째 주는 팀별 프로젝트로 많은 의견 공유와 협업이 있었던 반면
이번 알고리즘 챕터는 주로 개별 학습시간이 많았다.
먼저 알고리즘 기초 문제를 접해보고 주특기 언어의 기본을 다지기 위한 훈련 기간으로 생각하면 되겠다.
알고리즘 문제는 프로그래머스의 레벨1 문제들로 이루어져있었으며 레벨1 문제를 상 중 하 난이도로 나누어 단계별로 풀어가는 시스템 이었다.
알고리즘 사전적 의미는 아래와 같다.
알고리즘, 셈법은 수학과 컴퓨터과학, 언어학 또는 엮인 분야에서 어떠한 문제를 풀어맺기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다. 즉, 문제풀이에 필요한 계산절차 또는 처리과정의 순서를 뜻한다.
알고리즘은 처리과정을 직접 사고하여 코드로 표현하는 것 이라고 생각한다.
간단한 문제는 문제를 보고 한번에 풀이가 가능하지만 문제의 지문이 길고 복잡한 경우 해당 문제를
어떻게 단계별로 나누어 목표한 결과까지 도달 할 것이냐가 핵심인것 같다.
첫 번째, 같은 조원분들은 이공계열 출신이셨는데 문제 풀이과정을 공유하면서 내가 느꼈던 어려움은
수학에서 사용하는 용어나 개념이 나왔을때 조원분들은 이미 알고 있는 개념이라 쉽게 이해하는 반면 나는 그 용어의 의미를 공부하고 이해해야 다시 알고리즘 문제를 이해할수 있었기 때문에 쉽지 않은 과정이었다.
물론 꼭 수학을 잘해야 알고리즘을 잘 한다는 것은 아니지만 모르는 것보다 수학을 잘 아는 사람이 훨씬 간결하고 처리과정이 짧은 코드를 작성하기에 유리한 것은 맞는것 같다.
두 번째, 나는 주특기로 리액트를 희망하는 클래스에 있다. 때문에 알고리즘을 풀때 javascript를 사용하였는데 대부분 많은 알고리즘 풀이들이 파이썬으로 되어있어 공부하는데 수월하지 못했다.
물론 두 언어가 다르긴 하지만 기본적인 조건문이나 반복문의 경우 비슷한 코드의 형태를 갖고 있지만 파이썬은 비교적 다른언어에 비해 간결하고 쉽게 코드를 작성할 수 있는 특징을 갖고 있었으며 두 언어의 내장함수가 다르기 때문에 그 점에서 모르는 문제의 풀이를 찾아볼때 속 시원하게 해결 할 수 없었던 부분이 종종 있었다.
세 번째, 알고리즘을 풀기위해 기본적으로 익혀야할 자료구조, 이분탐색, 동적 프로그래밍 등등의 개념들을 이해하는데에 어려움이다. 우선 항해에서 이번에 진행한 챕터에서는 이러한 개념들을 설명해 주지 않았으며, 그 이유는 알고리즘 보다 주특기 언어에 친숙해지는 과정으로 의도하였기 때문인것 같다.
아마 이러한 개념들을 설명하며 주특기까지 훈련하기에는 6일이라는 시간이 짧기에 그랬던것이 아닐까 하는 추측과 모든시간이 개별 자습이었던것은 큰 아쉬움으로 남았다.
같은 조원분들 중 마음이 맞는 분들과 주특기 언어 공부를 진행하면서 주 2문제씩 풀며 1회 문제풀이 공유 시간을 갖기로 했다. 아직 항해의 기간이 초반부이기때문에 공부할 시간은 있다.
또 알고리즘 풀이에 필요한 개념들을 공부하기 위해서 항해에서 오픈해준 알고리즘 강의와
인프런에서 이번에 결제한 자바스크립트로 배우는 알고리즘 강의를 듣기로할 것이다.
항해에서 오픈해준 강의도 좋지만 나는 자바스크립트를 사용하기때문에 같은언어로 사용되는 강의를 우선적으로 학습하고 이후에 필요한 정보만 항해 알고리즘 강의를 듣고자 한다.
목표는 꾸준히 목표한 학습량을 항해하는 동안만이라도 계속해서 공부해서 조금이라도 알고리즘에 익숙해지고 레벨 1까지는 내 힘으로 풀이할수 있는 실력을 만들고 싶다. 사실 레벨 2~3까지 풀어야 흔히 말하는 코테에 통과할 실력이 되겠지만... 모르겠다 일단은 지금 목표는 그러하다..
우선 나는 퍼블리싱을 할때 제이쿼리를 사용하지 않고 바닐라 자바스크립트를 써왔었기 때문에 기본적인 문법은 조금 아는 상태여서 다행히 자바스크립트에 익숙해 지는데 크게 어려움은 없었다.
그러나 같은 팀원분들은 자바스크립트가 아예 처음인분들이 계셨기 때문에 알고리즘 학습 외에 저녁 시간마다 모여서 각자 발표할 주제에 대해 1인당 20분내외로 발표하는 시간을 갖게 되었는데,
이때 나는 자바스크립트 ES6의 기본문법을 조금씩 다른 팀원 분들에게 발표하였다.
예전에 공부했던 내용이지만 다시 공부해보니 아리송한 개념도 있었고 기본중에 기본인 선언에서
let과 const의 사용법과 var 선언법에 대해서 다시 이해하는 등 조금 더 기초를 다질수 있었던 시간이었다.
앞으로 이러한 시간들을 모아서 취업때 면접질문 내용들에 나올법한 개념들을 정리하여 면접핵심 요약정보를 미리 조금씩 준비해보는것도 좋을것같다.
내일부터는 리액트 주특기 학습이 본격적으로 시작되는데 가장 기대가 되는 챕터 이기도 하고
부디 헤이해 지지 않고 항해를 알차게 채워 나갈 수 있도록 정신적으로 체력적으로 더 단련하고 준비해 나아가야겠다.