STL VS COLLECTION Series 안내
뭐 엄청 거창할 건 없고…
내가 C++을 처음 배운건 2013년 1학기 학부과정때 였던 것 같다. 내가 나온 대학교 컴공 커리큘럼은 1학년 내내 C언어를 하고, 2학년 1학기때 C++을 했다. 이때는 근데 내가 주변 또래들보다 코딩만 좀 잘하는(막상 그렇다고 포인터를 이해하던 것도 아니고(그건 지금도 완벽하지 않은 것 같은데..?), 필기 시험을 잘 보지도 않았다. 그저 혼자만의 감상에 빠져서 공부를 딱히 하지 않은 핑계거리 였던 것이다.) 그런 상태였고 그저 대충 입출력.. 간단한 분기 로직등(반복, 조건 등등)을 하면서, printf/scanf가 그저 cin/cout이 됐을 뿐이며 c++을 배웠다고는 할 수 없을 학업 성취를 보이며 마무리 했었던 기억이 난다.
이후 객체지향적 개념은 그로부터 4년 뒤 복학을 한 2학년 2학기 때 C#을 들으며 이해 하게 되었고. 뒤에 자바를 연달아 배우며 객체지향적으로 스스로 완고해졌다고 생각한다. 즉 이때까지도, 사실 지금도 C++은 개발용도로는 전혀 쓸 실력이 없고(클래스 하나 레퍼런스 참조 없이 못짜는데) 온니 알고 최적화이다.
반대로 자바는 3학년 1년에 걸쳐서 사용하고, 그 이후 프로젝트에서도 자바를 사용했고, 싸피 들어와서도 스프링 때문에 자바를 또 배우는 처지로서 나에게 개발용 주 사용 언어를 꼽으라면 자바를 꼽을 것이다.
그래서 뭘 말하고 싶냐면
최근 기업 코테를 보면서 내가 백준을 공부해왔던 것과, 또 삼성 역량테스트를 준비하던 것과는 방향성이 너무나 달랐다. 그래서 첫 코테였던 라인 코테를 완전히 말아먹고 기업 코테를 위한 준비를 하게 되었다. 이때 평소 잘 쓰지 않았던 stl인 map, set, unordered_map, unordered_set 등을 사용했고, 크게 이 stl의 내부나 사용까지는 공부를 하진 않았지만 이후 필요할 때 알아서 몇 번 찾아보며 공부한 뒤 이후의 코테에서는 깊게 이해하지는 않았지만 내가 원하는 바를 구현하는덴 아무 문제도 없었다.
그런데 최근 프로그래머스 여름방학 스타트업 인턴 프로그램에서 코테 언어에서 c++을 제외했다. 나는 별 대수롭지도 않게 여겼고 (접수 당시엔 내가 스타텁 갈 생각이 없었기에) ‘어짜피 알고리즘 보는게 언어 실력을 보는게 아닌데’ 왜 c++ 굳이 쳐내서 이미지만 안좋아질까 생각했다.
하지만 몇몇분의 고수들과 이야기하면서 ‘스타트업 인턴 이라는 특성상 교육기간이 길기도 힘들고 인턴이지만 해당 언어 스택으로 할 수 있는 작업은 바로 할 수 있을 정도의 실력을 가진사람을 보기 위한 의도’에 의해 c++이 제외되었고 이것은 곳 내가 c++ 말고 다른 언어로도 알고리즘을 할 타당성이 만족된 것이다. 그리고 과연 내가 내 스스로 짠 C++ 알고 소스를 자바 등으로 옮기려면 옮길 수 있을 것인가(사실 있을 것 같긴하다.) 하는 의문이 나를 감쌌다.
당장 JAVA로 너가 짠 C++ 로직을 그대로 짜봐라? 못할것은 없다. 다만 내가 많이 해보지 않았기 때문에 숙련도가 부족하여 시간이 많이 걸릴 것으로 보인다. 이러한 숙련도와 연습을 목적으로.. 내가 익숙하지 않은 부분인 JAVA의 Collection을 공부하는 겸 기존의 STL도 분석하려고 한다. PS 용도!
즉
이 포스트는 STL VS COLLECTION 이라는 연재물의 시작을 알리는 것이다. 언제까지 얼마나 쓸지는 나도 모른다. 사실 이 인트로 적는것도 굉장히 귀찮기 때문이다. 일단 운을 띄운김에 곧바로 맵 하나는 연재해보겠다.