본문 바로가기
자료구조

패스트캠퍼스 캐시백 챌린지 01일 - intro 포함

by !ㅁㅇㅇㅁ! 2022. 4. 18.

 

이번에 두번째 챌린지를 시작하게 되었다. 좀더 꾸준하게.

왜냐? 

'이직 or 재취업'

을 마음먹게 되었으므로...

(경력 1년도 안되면 커리어 스크래치지만, 발령을 오지로 받은걸 어떡하겠는가

집세와 교통비로 월급을 40% 가까이 깎아먹어 보니 수도권, 경기도를 벗어난 체감이 되었다;;)

 

그리하여, 가뜩이나 python과 c++위주로만 코딩테스트 자료들이 넘치는 이 코딩테스트판에,

Java로 하는 코테 인강은 패스트캠퍼스와 프로그래머스, 인프런 3대장 뿐이었고...

그나마 친숙한 패스트캠퍼스 강의를 구매하는 김에 챌린지도 도전하게 되었다.

 

 우선,

1강은 전반적으로 OT라서 자료구조와 알고리즘이란? 에 대해서 설명하는 타입이다.

(역시 첫 강사님도 소개문을 보니 원래 'python'으로 코딩테스트나 백앤드 강의하시는 분이었다...)

 하지만, 주력언어 외 다른언어로도 구현해보는 필요성을 소개해주시는 것을 보니, 내공이 느껴지기는 했다.

(나도 처음배운건 Node.js기반이었으니)

 

잡설 잠시 줄이고,

 

자료구조란?

data structure.

대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미하며,

 해당 프로젝트나 라이브러리, 클래스, 메소드나 함수 단위에서

데이터 특성에 따라 효율적으로 데이터를 처리할 수 있는 구조를 고르는 지식이 필요하다.

(왜냐? 나같은 전공자가 아닌 반전공자 저년차 코더들은 repository와 같은 data access layer에서

list와 map을 생각보다 효율적으로 쓰지 못하는걸

현업에서 몸으로 체감해보고 교과서를 다시 펼치기 때문이다.

 물론 언어에 따른 특성[feat.kotlin]이나 트랜잭션+멀티스레드(신뷁) 도 참작은 되지만.)

 

그리고 나오는 다음 정의는

 알고리즘이란? 이었다.

이건 어떤 문제를 풀기 위한 절차/방법 하나로 정의된다.(뚜-렷한 정의)

단, 어떤 문제를 특정한 입력을 넣으면 원하는 출력을 엏을 수 있게 하는 방법론

이라고 요약하기에는 요새 나오는 코딩테스트 문제들이 워낙에 흉악해야지...

 

그리고 내가 학생시절을 넘어 현업에서 체감하기에는,

알고리즘 구현능력은 쓸모가 적었고,

문제에 따른 알고리즘 '선택'능력이 거의 80% 이상의 해결책을 차지했다.

 

솔직히 JVM 계열 언어들이나 python 정도만 해도,

각 언어의 컬렉션 라이브러리 자체제공 메소드들의 알고리즘이

올림피아드 나온 애들 코딩보다도 더 기똥차게 최적화 되어있었다.

이 강의를 만든 네임드들도 Java15 이상에서 컬렉션 메소드 수정하는 컨트리뷰터들 보단 최적화 못할거라고 소심한 만원빵이 가능할만큼.

 

그런 마인드로 왜 이 챌린지도 하고 공부도 하려고 하는가? 라고 묻는다면,

 '마이크로서비스의 설계와, 각 api 퍼포먼스에는 알고리즘 밑천이 절반정도는 필요하기 때문'

을 짧은 경험으로 근거를 든다.

 

그나마 나의 럭키한 점은 이커머스 프로젝트 초기 구축부터 옆에서 찌끄레기처럼 보면서

ㅈㄴ 느린 허접 api가 어떻게 리팩토링을 거치는지 봤기 때문에(나다...)

필요성을 느끼고 자기계발을 하게 된 것이기 때문이다.

 

정말 쥐꼬리라도 성능을 높이려면,

주구장창 쓰는 MutableList<T> 만으로는 안된다.

나도 'ConcurrentHashMap' 이런거 몰라도 될 줄 알았어...

그런데 요새 핫한 이벤트소싱(Axon), 이벤트 스트리밍(kafka)등등 써대면

일반 동기, 스레드 환경에서 사용하는 평범한 자료구조만으로는 안되는 상황이 언젠가는 오게 된다.

 

그리고 잘나가는 기업들은 기술스택도 저런걸 쓰니

기본기도 보고, 지원자도 걸러내고, 꿩도먹고 알도먹게 코딩테스트 난이도를 높여대서

-> '어자피 배워야 한다.' 로 귀결이 된다.

 

 

 

 

 

간만에 강의 사전예고에서 본 배열 직접코딩을 하며,

이만 OT를 마친다.

(1강과 2강을 합해도, 정말 알고리즘이란 무엇인가? 자료구조란 무엇인가? 내용 OT가 다여서 700자도 힘들었따...)

 

 

 

 

 

 

https://bit.ly/3L3avNW

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.