Problem Solving with Algorithms

반응형

리트코드는 굉장히 유용하고 잘 짜여있는 사이트이지만, 실제로 릿코드에 들어오는 사람들의 실력차가 큰 편이라고 생각합니다. 누군가는 리트코드나 알고리즘 공부를 처음 하는 사람일 수 도있고, 누군가는 알고리즘에 능통하지만 단지 이런 유형의 인터뷰 준비를 처음 하는 사람, 혹은 각종 대회를 휩쓰는 알고리즘계의 고수도 있습니다.

 

릿코드(leetcode) 사이트 자체가 문제은행 형식으로 출발했기 때문에, 어찌 보면 이 사이트가 왕초보에게는 조금은 불친절할 수 있다는 것도 사실이라고 생각합니다. 그러나, 릿코드에서는 이런 부분을 감안하여 [Exploar > Learn] 섹션을 제공하며, 이 [Explore > Learn]이라는 섹션을 잘 활용하면, 알고리즘에 대한 기초 지식도 쌓고, 리트코드에 익숙해지는데 많은 도움이 되리라 생각합니다.

 

리트코드의 Exlore > Learn 섹션에 접속하기

가장 쉬운 방법은 URL을 통해서 단숨에 접근하는 것입니다. 

 

 

그러나 아래의 방법으로도 접근하실 수 있습니다.

리트코드의 메뉴에서 Explore를 클릭합니다.
[More]버튼을 누르면 [Learn] 섹션에 있는 모든 카드를 조회할 수 있습니다.

 

 

 

릿코드의 [Learn] 섹션 둘러보기

이제 우리는 릿코드의 Learn 섹션에 접속하였습니다. 이 섹션에는 무려 카드가 16개나 있는데요, 익숙한 알고리즘 순서대로 풀어나가시면 됩니다.

혹시 여기의 용어가 대부분 생소하신 분이라면 제가 아래에 안내해드리는 순서대로 풀어나가시면 되겠지만, 우선 익숙한 한글로 된 기초 자료구조/알고리즘 강의를 먼저 수강하고 오시기를 추천드립니다.

 

제가 추천하는 무료강의는 아래의 글에 나와있습니다. 한국정보올림피아드에서 촬영했던 강의로 초급/중급/고급 단계로 나뉘어 있고 이해하기 쉽고 간결한 강의입니다. 교재도 무료로 제공됩니다.

 

 

 

 

 

리트코드의 Explore/Learn 섹션 푸는 순서

다음은 LeetCode에서 Explore/Learn 섹션 푸는 순서를 알려드리겠습니다.

 

 

 

리트코드 Learn 섹션 푸는 방법

이제 카드를 하나 골라서 같이 풀어보겠습니다. 제가 고른 카드는 첫 번째에 나와있는 Arrays 101입니다.

 

1. 먼저 주어진 설명을 잘 읽어봅니다.

아래 캡처화면의 왼쪽을 보면 우리가 현재 어느 페이지를 보고 있는지 알 수 있습니다. 현재 우리는 Overview를 살펴보고 있습니다.

릿코드 익스플로어 > 런 섹션의 어레이 101

설명을 잘 읽어보니 이 단원을 배우고 나면 배열에 대한 기본적인 지식을 쌓게 되는 것 같습니다.

 

2. 첫 번째 파트를 다 읽었으면, 다음 파트로 넘어갑니다.

이 Array 101이라는 파트 자체가 초보를 위한 것이기 때문에, 다음 파트에서도 Array 가 무엇인지 설명하는 데에 많은 시간을 할애합니다. 위에서부터 찬찬히 설명을 읽어내려가다 보면 드디어 5번째에서 코딩문제를 마주하게 됩니다.

 

 

 

3. 코딩문제를 풀어봅니다.

코딩문제는 아래와 같이 생겼습니다. 푸는 방법이 아리송하다면 아래의 힌트를 눌러봅니다.

힌트를 누르니, 힌트 패널이 펼쳐졌습니다.

힌트를 눌러도 잘 모르겠다면, 맨 위로 올라가 [Solution] 버튼을 눌러 솔루션을 봅니다. 

 

문제를 얼마나 붙들고 있다가 솔루션을 펼쳐 보아야 하는가?라는 것에 대해서 의견이 분분합니다만, 대부분의 사람들은 1문제당 문제 풀이를 고민하는 시간이 최대 1시간을 넘기지 않아야 한다는 생각에 동의할 것이라고 생각합니다. 특히나, 리트코드의 [솔루션] 이라는 것은 단순히 답만을 공개하는 것이 아닌, 그 답으로 가기 위한 친절한 안내서 같은 것이라고 생각합니다. 다른 말로 하면, 물고기를 잡아주는 것보다  물고기를 잡는 방법을 알려주는 것에 더 가깝다고 볼 수 있습니다. 그래서 저는 문제를 풀고 나서도 솔루션을 꼭 읽어볼 것을 추천드립니다. 정말 많은 것을 배울 수 있습니다.

 

리트코드의 솔루션 섹션은 대부분 유료회원에게만 공개되어 있으므로, 유료회원 가입을 고려해 보시기 바랍니다. 아래의 글에서 유료회원을 왜 해야하는지, 어떤 것들이 제공되는지 파악하실 수 있습니다.

 

 

 

4. 솔루션을 살펴보며 나의 부족했던 부분 혹은 조금 더 배울 점이 있는지 찬찬히 살펴봅니다.

솔루션을 아래와 같이 기초 지식부터 시작해서, 어떤 접근법을 사용했는지와 글로는 이해하기 어려운 데이터 구조를 그림으로도 친절하게 설명해 주고, 코드도 보여줍니다. 그리고 사용된 알고리즘에 대한 시간 복잡도와 공간 복잡도도 분석하고 설명도 덧붙여 줍니다.

 

 

여기까지 오셨으면 이제 거의 다 된 것입니다. 이제 이 문제를 풀고, Submit을 누르면 이 문제는 완성한 것으로 리트코드에 표기됩니다.

 

 

 

5. 실력을 한 단계 업그레이드하고 싶다면?

인간의 기억은 2일 후에 복습하면 최대의 효과를 지닌다고 합니다. 이 문제를 처음 푼 다음날이나 그다음 날 다시 문제로 들어와서 백지에서 예쁜 코드를 한번 작성해 보시는 것을 추천드립니다.

 

 

Array 101 섹션에 대한 전반적인 문제풀이를 보고 싶으시면 아래의 글을 참고하세요.

 
반응형
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band