Now Loading ...
-
-
🧩 [Data Structure] 자료구조 무엇일까요?
🧩 [Data Structure] 자료구조 무엇일까요?
1️⃣ 자료구조는 데이터를 저장, 조직, 관리하는 방법.
자료구조
자료(데이터)에 효율적으로 접근하고 수정할 수 있도록 저장, 조직, 관리하는 방법에 관한 이론.
2️⃣ 자료구조는 문제 해결에 사용할 부품.
알고리즘
문제 해결 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어 내는 과정을 기술한 것.
자료구조
문제 해결 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어 내는 과정에서 부품의 역할.
자료구조 학습시 필요능력
자료구조는 프로그램으로 구현되고 사용되므로 자료구조를 학습하려면 프로그래밍 능력이 기본으로 필요.
자료구조를 구현, 사용, 결합하는 과정에서 수학적 사고도 크게 도움이 됨.
사고가 체계적일수록 자료구조를 사용한 결과물은 가명하고 관리하기 쉬워짐.
자료구조와 밀접한 관련이 있는 수학은 수열, 수학적 귀납법 등을 포함하는 이산 수학임.
아래 그림은 알고리즘, 자료구조, 프로그래밍, 이산 수학의 관계를 나타냄.
자료구조는 운영체제, 컴퓨터 네트워크, 인공지능, 시스템 프로그래밍, 컴파일러 등 컴퓨터 과학의 거의 모든 주제를 구현하기 위한 사고의 빌딩 블록을 제공함.
3️⃣ 자료구조는 생각하는 방법을 훈련하는 도구.
자료구조를 다루는 과정에 포함된 ‘생각하는 방법’도 매우 중요함.
자료구조를 구현하는 과정.
자료구조들을 이용해서 문제를 해결하는 과정.
문제를 해결하는 과정에서 논리의 골격이 구성되는 방법 또는 스타일 등
자료구조에서 시작되는 시 생각하는 방법은 자연스럽게 알고리즘으로 연결됨.
문제 해결을 위한 생각의 과정에서 ‘의미 단위를 잡는 일’은 매우 중요하다.
‘의미의 매듭을 만든다’고도 표현할 수 있다.
큰 프로젝트를 여러 모듈로 분해하면 각 모듈이 ‘의미의 매듭’이 된다.
또 각 모듈은 더 작은 모듈로 나뉠 수 있다.
즉, ‘의미의 매듭;은 여러 크기로 산재할 수 있다.
프로그래밍에서 어떤 작업을 함수로 만드는 것도 ‘모듈화의 일종’이다.
함수로 분리하면 강한 의미 단위가 된다는 뜻이다.
‘의미의 매듭;을 만드는 과정에서 ‘여러 가지 생각의 구조가 개입’될 수 있는데 ‘가장 중요한 구조’중 하나가 ‘재귀’다.
컴퓨터 과학 전반에 걸쳐 가장 중요한 사고 체계 중 하나
재귀
어떤 문제가 자신과 성격이 똑같지만 크기만 더 작은 문제를 포함하고 있는 구조를 말함.
‘큰 의미 매듭’이 ‘같은 모양의 더 작은 의미 매듭’을 ‘1개 이상 포함’하고 있는 것이라 할 수 있다.
아래 그림은 재귀적 구조의 시에르핀스키 삼각형 예로, 같은 구조가 계층적으로 반복되는 것을 볼 수 있다.
4️⃣ 자료구조의 종류와 자바의 컬렉션 패키지.
자료구조는 아래 그림과 같이 종류가 다양하지만 상황과 목적에 맞게 적절한 자료구조를 선택함으로써 효율적인 데이터 관리가 가능.
자바의 경우 클래스 종류별 패키지로 분류되어 있는데 그중 자료구조 관련 클래스를 모아둔 패키지가 아래 그림과 같은 컬랙션 패키지이다.
이 패키지에서 다양한 자료구조를 손쉽게 사져다 쓸 수 있어 같은 시간 동안 옛날보다 훨씬 큰 작업을 수행 가능.
이렇게 미리 만들어둔 것은 범용으로 사용할 수 있도록 지나치게 많은 기능을 제공하거나, 핵심에 집중하기 위해 최소한의 기능만 넣어 놓은 경우도 있음.
따라서 효율적인 코딩을 위해 직접 만드는 것이 더 바람직한 경우도 있음
자료구조를 직접 만들거나 만들어진 것을 목적에 맞게 잘 활용하려면 자료구조 내부의 작동원리를 이해하고 있어야 함.
Touch background to close