JavaScript로 코딩테스트 준비하기(0) - 왜?

동동·2021년 1월 2일
39
post-thumbnail

처음으로 코딩테스트를 준비하는 분들은 코딩테스트를 위해서 어떤 언어를 선택하는 것이 좋을지 한번쯤은 고민해보셨을 것 같습니다. 전공생이신 분들은 학교에서 적어도 2~3가지의 언어를 접하니, 선택지가 다양해서 더 고민이 됩니다.

일반적으로 코딩테스트를 준비할 때에는 C++이 가장 목적적합하다고 합니다

제가 존경하는 바킹독 형님께서도 C++언어를 추천하고 있습니다. 바킹독 형님께서는 자바나 파이썬은 동작 속도가 느려 전수조사 문제에서 손해를 보고 인터넷 상의 자료도 C/C++에 비해 많이 부족하기 때문에, 자바나 파이썬으로 코딩테스트를 응시하려는 분들께 시간이 많으면 C++로 옮겨타서 코딩테스트를 보는 걸 권하고 있습니다.
(출처: BaaaaaaaarkingDog-[실전 알고리즘] 0x00강 - 오리엔테이션)

그러나 저는 Javascript로 코딩테스트를 준비합니다

코딩테스트를 준비하는 이유, 다르게 말하면 알고리즘을 공부하는 이유는 무엇일까요?
저 같은 취준생에게는 취업의 문턱을 넘기 위해서 일 것입니다. 현업 개발자분께서는 아마도 이직을 위해서 이거나, 개발자로서의 기본 소양을 유지하기 위하여 일 것 같습니다. 또한, 뛰어난 분께서는 ICPC 등의 알고리즘 대회에 좋은 성적을 거두기 위해서 일 것 같습니다.

저는 프론트엔드 개발자가 되고 싶습니다. 많은 프로그래밍 분야 중에 프론트엔드를 선택한 이유 중의 일부는 방대한 Javascript 생태계와 활발한 커뮤니티, 문법의 자유로움입니다.

수학을 좋아하고 알고리즘도 좋아하지만, 알고리즘 대회에 입상을 꿈꾸거나 이를 전공으로 하는 대학원에 들어가기 위해서 알고리즘을 공부하지 않습니다. 저는 프론트엔드 개발자로서 갖추어야 할 기본 알고리즘 소양을 기르기 위해서, Javascript에 대한 문법적, 실체적 지식을 갖추기 위해서, 그리고 신입 개발자로 입사하기 위한 코딩테스트를 통과하기 위해서 알고리즘을 공부합니다.

다행히 요즘 빅테크기업들은 코딩테스트용 언어로 Javascript를 지원하는 경우가 꽤나 있는 것 같습니다. 적어도 제가 지원하고 싶어하는 기업들은 꽤 지원을 하고 있습니다. 코딩테스트에서 정식으로 Javascript를 지원하는 이상, 느린 속도로 인해 시간 초과가 발생할 걱정은 하지 않아도 되는 것 같습니다. (제대로 된 알고리즘으로 문제를 풀었다는 가정하에서...)

따라서, 프론트엔드 개발자로서 계속 사용하게 될 Javascript에 대한 지식을 함양하기 위해서는 Javascript로 코딩테스트를 준비하는 것도 괜찮은 선택이라고 생각합니다. 또한, C++, Python, Java에 대한 어느 정도의 기초 지식이 있다면, 막히는 문제가 있다면 다른 언어로 작성된 해답을 보면서 문제 해결의 아이디어를 얻을 수 있습니다.
이때까지 Baekjoon Online Judge에서 Javascript로 약 100문제 가량 풀었지만, Javascript라서 못 푼 문제는 딱 한 문제 밖에 없었습니다. (2293번 동전1: 시간 제한이 0.5초로 극도로 짧습니다. 혹시 Javascript로 문제를 푸셨다면 저에게도 방법 공유를 부탁드립니다...)

Javascript로 코딩테스트를 준비하는데 자료가 빈약한 것은 사실입니다

콘솔창으로부터의 입력도 처음에는 어떻게 해야 할지 막막할 수 있습니다. nodejs로 express 서버는 돌려보았지만, 입출력 스트림을 다뤄보는 일은 잘 없으니까요.
또한 c++의 STL에 비해 Javascript가 기본적으로 제공하는 자료구조나 내장 유틸 함수가 부족한 것도 사실입니다.
따라서 앞으로 제가 Javascript로 문제를 풀면서 적용한 노하우, 앞으로 풀어가면서 깨닫게 되는 팁에 대해서 정리해보고자 합니다.

참고로, 저는 '실행속도' 보다는 'ES6+ 문법'에 조금 더 초점을 맞춘 풀이 및 팁을 말씀드릴 예정입니다. '실행속도 따위는 신경쓰지 않겠어' 보다는, 어차피 '실행속도'를 고려한다면 다른 언어를 선택하는 것이 맞기 때문에, 조금 실행속도가 느리더라도 Javascript다운 코드로 문제를 풀어갈 계획입니다.

결론: 저와 같은 생각을 가지시고 Javascript로 코딩테스트를 준비하겠다는 분은 앞으로 제가 제시하는 팁을 참고해주시면 감사하겠습니다.

profile
작은 실패, 빠른 피드백, 다시 시도

2개의 댓글

comment-user-thumbnail
2022년 7월 6일

안녕하세요. 저도 최근에 웹 개발을 위해 하던 c++을 잠시 접어두고 자바스크립트 공부를 시작했는데, 공부하면서 개인적으로 이렇게 쓸모 많은 자바스크립트 하나로 코딩테스트까지 가능하다면 얼마나 좋을까 생각했는데, 삼성 b형같은 경우 제외하고는 대부분 테크기업에서 자바스크립트를 허용하나요?

답글 달기