자료구조 학습) 5. 비선형 자료구조

320x100

개요

안녕하세요, Readder입니다.

 

이번에는 비선형 자료구조에 대해서 배워보겠습니다.

자료구조를 처음 접하시는 많은 분들이 선형 자료구조까지는 힘들었지만 놓지 않고 잘 따라오시다가, 비선형 자료구조를 배우기 시작할 때 놔버리시는 경우가 많다고 들었습니다.

 

맨 처음 비선형 자료구조를 접할 때는 이전과는 다른 저장 방식에 당황스러우실 수 있어서, 저 나름 이런 패턴을 통해 접근하는 게 좋다고 생각합니다.

1. 코드로 어떻게 구현될지에 대한 생각을 완전히 배제하고 저장 방식만 이해한다.

2. 코드를 제외하고 저장 방식에 대해서 아무 도움 없이 혼자서 그려본다.

3. 코드로 어떻게 구현될지를 생각하며 글을 처음부터 다시 본다.

4. 직접 구현할 수 있다면 좋겠지만, 그렇지 못할 경우 코드를 보고 따라하며 구현해본다.

위 4가지입니다.

 

왜 위와 같은 학습 방법으로 진행하셔야 하는지 말씀드릴게요.

1. 코드로 어떻게 구현될지에 대한 생각을 완전히 배제하고 저장 방식만 이해한다.

-> 어려운 내용을 학습할 떄는 구분 지어 학습하는 것이 중요합니다.

리스트로 예를 들어 볼게요. 이제 처음 리스트를 학습하려고 하는데 '노드들은 Node class를 생성하고.. 이 노드를 생성할 땐 add라는 메서드를 사용하는데 이 때는 노드에 nextNode에 값을 넣는다..' 이런 식으로 학습하게 되면 답이 없어요. 너무 어렵습니다. '리스트에는 노드라는 게 있는데, 여기에 각각 값을 저장하는 거고, 한 노드와 다음 노드끼리도 연결할 수 있구나.'를 먼저 익히고 '그럼 add를 할 때는 노드 하나에 값을 넣고 다음 노드를 연결해 주는 작업이 필요하겠네'라고 2가지를 나누어 배워야 합니다.

이 방법을 선형 자료구조를 설명드릴 때 말씀 안드리고 지금 말씀드리는 이유는, 선형 자료구조는 사실 그래도 돼요. 쉽진 않았겠지만 저 방법으로 배워도 어찌어찌 배울 수 있는데, 비선형 자료구조를 처음 봤을 때 저런 식으로 학습을 하시면 정말 힘듭니다. 저장 방식과 코드 구현을 동시에 알려고 하시다 보면 과부하 옵니다. 다시 한번 말씀드리지만 작동 원리를 스스로 그릴 수 있을 때까지 이 내용을 어떻게 코드로 나타낼 수 있을까라는 생각은 일단 배제하셔야 합니다.

 

2. 코드를 제외하고 저장 방식에 대해서 아무 도움 없이 혼자서 그려본다.

-> 위에서 저장 방식에 대한 이해에 집중하셔야 한다고 말씀드렸었죠. 잘 이해했는지 페이지를 닫고 각각의 노드를 그리고, 그 노드에 1, 2, 3, 4, 5 등의 값을 넣고, 하나씩 연결해 나가는 과정을 그려봅시다.

 

3. 코드로 어떻게 구현될지를 생각하며 글을 처음부터 다시 본다.

로직을 이해하였으니, 이제 이 로직을 어떻게 구현하면 될지 봅시다.

 

4. 직접 구현할 수 있다면 좋겠지만, 그렇지 못할 경우 코드를 보고 따라하며 구현해본다.

직접 구현해보는 것은 굉장히 큰 도움이 됩니다만, 사실 너무 힘들다면 며칠에 나눠서, 또는 다음에 기회가 있을 때 구현하셔도 돼요. 진짜 중요한 건 이 자료구조가 어떻게 동작하는지, 시간 복잡도와 공간 복잡도가 얼마인지가 중요하기 때문에 그 부분만 반드시 짚고 넘어가시면 됩니다.

 

비선형 자료구조

 

 

 

320x100