자료 구조란 무엇인가(초심자용)

FE/퍼블리싱 블로그·2021년 4월 6일
0

프로그래밍 공부

목록 보기
1/4

인트로

자료 구조가 무엇인지 감을 잡기 위해 유튜브에 검색을 하여 위의 세 영상을 시청하였다.

학교에서 배웠던 tree, singly linked-list, doubly linked-list, stack, queue 등이 자료 구조의 방법론/도구였다.

초심자를 위해 명시적으로 잘 설명해주는 생활코딩의 영상을 통해 자료 구조를 어떻게 쉽게 정의내릴 수 있을지 알게 되었다.

정의

자료 구조자료를 활용함에 있어 "공간"과 "시간"을 아껴줄 수 있는 방법론이라고 정의할 수 있겠다.

예시

예시로 책과 서재(하나의 방)이 있다고 하자. 개별의 책은 자료(data)이다. 서재라는 방 안에는 책장이 공간 중 일부를 차지하고 있을 것이고, 나머지로 빈 공간이 일정 부분 존재할 것이다.

1. 자료 구조를 고려하지 않음

서재 안에 여러 권의 책이 어떻게 자리를 잡아있든 상관하지 않을 것이다.

한두 권의 책이라면 널부러져 있어도 빈 공간을 그리 차지하지도 않을 것이고, 찾기도 그리 어렵지 않을 것이다.

하지만 수천, 수만 권의 책이 서재 안에 널부러져 있다면 쓸데없이 빈 공간을 많이 차지하게 될 것이고, 원하는 찾는 데에도 시간이 굉장히 오래 걸릴 것이다.

2. 자료 구조를 고려함

서재 안에 있던 책장을 불러와보자. 책장은 책의 나열 및 구조를 잡는 데 도움을 주는 도구이다. 책을 정리하기 위한 방법론 두 가지를 가지고 와보자. 카테고리 별로 나열알파벳 순으로 나열.

서재의 잔여 공간에 수천, 수만 권의 책을 널부러뜨리는 대신, 다 쓸어담아 책장 안에 담는다. 그리고 이를 카테고리 별로 나눈다. 그리고 알바벳 순으로 나열한다.

결론적으로 서재 안에 모든 책들은 책장 안에 특정 방식에 맞게 정리가 된 상태이다. 서재 안의 많은 공간이 확보되게 되었고, 수많은 책 중 원하는 책을 찾기가 수월해졌다.

공간도 확보하고 시간을 예전보다 덜 낭비하게 되었다.

실생활

우리가 위에서 책장으로 틀을 잡고 카테고리 별로 나열알파벳 순으로 나열 방법을 사용했다.

실생활에서는
1. 서재가 메모리가 될 것이고
2. 책장이 Array, Singly Linked-List, Doubly Linked-List, Stack, Queue, Hash Table과 같이 데이터의 정리를 돕는 틀이 될 것이고
3. 책장 정리 방법이 알고리즘(우리가 가진 문제를 해결하해주는 해결책)이 될 것이다.

위의 도구들은 익히기 쉽지 않다. 하지만 도구가 있다는 걸 아는 상태도구가 있다는 걸 모르는 상태 중 당신은 무엇을 선택할 것인가?

라이트 형제가 겪었던 시행착오에서 얻어낸 지식으로 비행기, 혹은 그 이상의 것을 만들어낼 것인가, 아니면 나는 법을 알아낸다며 라이트 형제가 겪은 시행착오를 다시 겪을 것인가?

우리 삶에 있어 시간은 유한하다. 선조들도 자신들이 겪어온 것을 바탕으로 우리들이 새로운 것을 만들길 원할 것이지, 자신들이 해온 걸 다시 겪게 하고 싶진 않을 것이다.

결론

위에서 소개한 POCU 코리아 - 강좌소개: 3500 알고리듬 및 자료구조 (Java) 영상에선 알고리즘을 확실한 문제 해결법 혹은 어떤 문제를 해결하는 명백한 방법으로 정의한다.

문제를 해결하는 명백한 방법/도구가 있다면 문제에 맞는 걸맞는 해결 도구를 떠올릴 수 있겠지만, 그렇지 않다면 우리는 문제를 해결하지도 못할 뿐더러, 문제를 해결할 기회조차 갖지 못할 것이다.

0개의 댓글