안녕하세요 모두들, 제 이름은 Greg입니다. 2020년부터 웹 개발에 일하고 있습니다. 몇 년 전에 저는 LeetCoding을 시작했습니다. 그 시간 동안에 저는 몇 가지 핵심적인 통찰력을 모았고, 그것들을 여러분과 공유하고 싶습니다!
LeetCode가 빛나는 곳은 어디인가요?
알고리즘 및 추상적 사고를 발전시키고, 경쟁 프로그래밍에 대한 튼튼한 기초를 구축해줍니다. 실시간 코딩 인터뷰 중과 비단순 문제를 해결할 때 자신감을 줍니다. 복잡한 데이터 구조와 그 관계를 머릿속으로 시각화하고, 전체 해결책을 미리 구상하며, 점근적 복잡성을 평가하고, 매우 높은 성능을 내는 최적화된 코드를 작성하는 방법을 훈련시킵니다.
LeetCode는 어디가 부족한가요?
대부분의 제품 개발 작업은 프레임워크와 API와 함께 작업하는 것을 중심으로 돌아가므로, 매일 사용되는 DSA 지식이 직접적으로 적용되지 않는 경우가 많습니다. LeetCode는 제품 사고방식, 시스템 아키텍처, 팀워크, 또는 유산 코드베이스를 유지하는 방법을 가르쳐줄 수 없습니다. 주요 요약: LeetCode는 당신을 훌륭한 프로그래머로 만들 수 있지만, 반드시 훌륭한 소프트웨어 엔지니어로 만들 수는 없습니다.
기본적인 간극을 식별하고 해결하기
기본적인 알고리즘과 데이터 구조를 넘어, 특정 문제를 해결하려면 수학 이론, 조합론, 비트 조작, 재귀, 탐색 알고리즘, 메모화, 동적 계획법 (DP) 등에 더 깊이 파고들어야 합니다.
LeetCode와 실제 개발
가장 어려운 LeetCode 문제들조차 주변 맥락이 전혀 없이 완전히 고립되어 있음 - 실제 개발 작업들은 항상 기존의 코드베이스와 비즈니스 맥락과 함께 와야 하며, 이것이 실제 복잡성이 있는 곳임.
인지적 이점은 프로그래밍을 넘어서기도 함
수백 개의 문제를 경험하면 뇌는 시스템 사고로 적응하며 실제 생활의 도전 과제에 대한 접근 방식을 변화시킵니다. 패닉하기 대신 본능적으로 큰 문제를 관리 가능하고 해결 가능한 단계로 나눕니다. 혼란이 있던 곳에서 패턴을 보기 시작합니다. 당연히 더 간단하고 효율적인 해결책을 선호하고 낭비되는 노력을 최소화합니다.
"Beats 100%" 성능을 달성하려면
적절한 알고리즘을 선택하는 것만으로는 부족하며, 프로그래밍 언어에 대한 깊은 이해와 그 전력을 활용할 필요가 있습니다. 동일한 문제에 대한 여러 해결책은 시간과 공간 복잡도가 동일할 수 있지만, 그 기본적인 구현은 실제 실행 시간에 큰 차이를 만들 수 있습니다. 그 결과, 언어 최적화가 매우 높은 O(n2) 알고리즘은 실제로 최적화되지 않은 O(n) 해결책보다 더 잘할 수 있습니다.
나중에 JavaScript/TypeScript의 실제 미초적 최적화에 대한 다른 포스트를 작성할 수도 있습니다.
LeetCode는 IT 검은도를 위한 길입니다!












