참고문서 - 윤성우의 열혈 자료구조
1차 작성 - 2016/03/04 (이글루스에서 옮김)
자료구조는 데이터를 표현하고 저장하는 방법에 대한 설명이다.
프로그램의 정의는 “데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것”
위에서 말하는 “데이터의 표현” 이란데이터의 저장을 포함하는 것이다.
선형 구조 – 데이터를 선의 형태로 나란히 혹은 일렬로 저장하는 방식
비선형 구조 – 데이터가 나란히 저장되지 않는 방식
알고리즘 – 표현 및 저장된 데이터를 대상으로 하는 ‘문제의 해결 방법’
Ex) 자료구조 측면의 배열 선언
Intarr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
Ex) 알고리즘 측면의 배열에 저장된 합 구하기
For(idx=0 ; idx < 10; idx++ )
Sum += arr[idx];
문장에서의 예문
“여기상자가 제법 많이 쌓여 있지요? 이 상자들 중 어딘가에 넣어 둔 머그컵을 찾으셔야 합니다.”
위의문장에서 ‘쌓여있는 상자’는 자료구조이다.
“노란색으로포장되어 있는 상자들이 머그컵이 저장되어 있는 상자입니다”
상자가차곡차곡 위에서부터 쌓여 있다고 가정했을 때 상자의 포장지 색이 노란색인 상자만 선별하는 방법을 알고리즘이라고 할 수 있다.
작가가 하고픈 말
“자료구조에 따라서 알고리즘은 달라집니다.”
“알고리즘은 자료구조에 의존적입니다.”
즉, 프로그래머로서 문제해결을 하는 것은
자료구조를 파악하고 데이터를 어떻게 정리(or 정렬)할지를 선정하는 것이 선행되어야 하며 그 자료구조(정렬된 데이터)를 이용하여 원하는 데이터를 가져오는 방법을 만들어 내는 것
이런 알고리즘을 만들기 위해서는 현재 내가 다루는 데이터의 구조를 알아야 한다
라고 결론을 내려본다.
---------------------------------------------------------------------------------------------------------------------------------------------------------
위의 내용이 작년 수준에서 정리한 내용이다.
제대로 코딩을 시작한지 2014년 11월 부터이니 현재로서 만 3년이 되었다.. 나 그럼 이제 4년차? 시간가는게 두렵다 ㅠㅠ
(사실 첫회사가 있었으나.. 개발자라고 할 경력을 3개월 밖에 인정 못 받은 수준이니...)
어쨌든 만 3년이 되는 지금 다시 자료구조를 생각해보니 학부생이었다면 2년정도 걸린다 했을 때 2학년 때 되어서 이해 되지 않았을가 싶다 (한번에는 잘 몰랐을 듯...)
자료구조가 중요한 이유만 생각해 보자 아니 자료구조라는 것을 왜 만들었을까? 관리 효율을 위해서??
선형이 되었든 비선형이 되었든 자료구조의 하나의 특징은 연결성이다 하나의 데이터는 다른 데이터와 연결되어 있다
Table 형대의 자료구조도 생각해보자 (데이터베이스에서는 Entity 혹은 관계형 데이터 모델이라고 나와있다)
윤성우 자료구조에는 저런 Table 형태는 없다 정확히 선형이나 비선형으로 표현되는 것이 아니다 굳이 만들자면 리스트<리스트> 나 맵<맵> 이런 방식의 중첩구조로 나타낼 수는 있다
어쨌든 이렇게 저렇게 막 끄집어내서 도달하려는 결론은 "데이터들" 을 어떻게 다룰 것인가를 고민하게 된다.
정보(information)가 데이터로 바뀌고 우리가 다루는 것은 데이터가 아니라 데이터들이다.
쓸데없이 철학적으로 복잡하게 생각하는 것 같지만 현실세계의 많은 것들이 발전단계에서 결국 수적 양적 증가에 대해 어떻게 대처하는가에서 발전해왔다
제품의 대량생산의 가능으로 산업혁명과 다양한 물류 유통 마케팅 산업이 가능해졌고 단순했던 정보가 대량의 데이터로 변하면서 정보혁명과 데이터 분석 빅데이터 등 결국 대량의 많은 것들을 어떻게 Processing(처리) 하느냐에 대한 선구자들의 고민이 있었을 것이다 (너무 멀리 갔다)
간단히 말하면 뭐든 많아지면 처리하기 힘들어진다 이 말이다 그리고 그 많은 것을 처리하는 것이 그 시대에 필요한 기술이 된다
하고 싶은 말은 다시 앞으로 온다 많아진 데이터들을 실제 컴퓨터가 인식할 수 있는 단위로 다루기 위해 공통의 규격(프로토콜같은 필요로)으로 정리해 둔 것이다
즉, 한 두개의 데이터가 아닌 많아진 데이터들을 효과적으로 또는 정해진 형식(Type)에 따라 저장해 두기 위해서 자료구조를 만들었을 가능성이 크다
우리는 많아진 데이터들을 처리하기 위해 자료구조를 사용한다로 정리한다 즉 자료구조도 도구와 수단으로서 존재한다
'Computer Science > 자료구조' 카테고리의 다른 글
추상자료형이란? (0) | 2022.10.02 |
---|---|
C++ 기반 (0) | 2022.10.02 |
리스트 구현 문제 (0) | 2022.10.02 |