Top 47 자료구조 알고리즘 차이 The 200 Correct Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 자료구조 알고리즘 차이 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: 자료구조 알고리즘 차이 자료구조 알고리즘 pdf, 자료구조 정리 pdf, 자료구조 책, 자료구조 알고리즘 책, 자료구조 독학, 자료구조 종류, 자료구조 강의, 프로그램 = 자료구조 + 알고리즘

자료구조 : 데이터를 어떠한 형태로 저장하고 관리할 것인지에 대한 방법. 그래서 자료구조는 어떻게 효율적으로 자료를 저장할 것인가에 대한 고민이 필요하다. 알고리즘 : 저장된 데이터를 찾거나 변형하거나 수정할 때 필요한 방법.


Data structures, Algorithms, and Code Testing?
Data structures, Algorithms, and Code Testing?


자료구조와 알고리즘의 차이

  • Article author: velog.io
  • Reviews from users: 10495 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 자료구조와 알고리즘의 차이 Updating …
  • Most searched keywords: Whether you are looking for 자료구조와 알고리즘의 차이 Updating 알고리즘과 자료구조의 차이가 있다는 것은 알겠는데 정확하게 어떤 차이가 있는지 궁금했던 적이 많다.이번 포스팅을 통해 둘 사이에 정확하게 어떤 차이가 있는지 알아보자.자료구조는 말 그대로 자료(data)를 담는 구조이다. 자세히 말하면 컴퓨터 과학에서 접근 및 수정을
  • Table of Contents:

Algorithm

서론

자료구조

알고리즘

자료구조와 알고리즘의 차이

프로그램의 정의

자료구조와 알고리즘의 차이
자료구조와 알고리즘의 차이

Read More

[Algorithm] 알고리즘이란? 알고리즘 vs 자료구조 차이란?

  • Article author: onlyfor-me-blog.tistory.com
  • Reviews from users: 22597 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Algorithm] 알고리즘이란? 알고리즘 vs 자료구조 차이란? 즉, 문제 해결에 필요한 계산 절차 또는 처리 과정의 순서를 뜻한다. 프로그램 명령어의 집합을 의미하기도 한다. 알고리즘은 연산, 데이터 마이닝(기계 … …
  • Most searched keywords: Whether you are looking for [Algorithm] 알고리즘이란? 알고리즘 vs 자료구조 차이란? 즉, 문제 해결에 필요한 계산 절차 또는 처리 과정의 순서를 뜻한다. 프로그램 명령어의 집합을 의미하기도 한다. 알고리즘은 연산, 데이터 마이닝(기계 … 유튜브 보다가 문득 떠올라서 알고리즘이 뭔지, 알고리즘과 자료구조 차이는 뭔지 확인하고 정리하기로 했다. 알고리즘의 사전적 정의는 아래와 같다. 어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하..
  • Table of Contents:

나만을 위한 블로그

[Algorithm] 알고리즘이란 알고리즘 vs 자료구조 차이란 본문

티스토리툴바

[Algorithm] 알고리즘이란? 알고리즘 vs 자료구조 차이란?
[Algorithm] 알고리즘이란? 알고리즘 vs 자료구조 차이란?

Read More

OKKY – 자료구조랑 알고리즘의 차이?

  • Article author: okky.kr
  • Reviews from users: 26815 ⭐ Ratings
  • Top rated: 3.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about OKKY – 자료구조랑 알고리즘의 차이? 간단히 컴퓨터 디렉토리 구조가 자료구조와 알고리즘이 둘다 있는 형태라 볼수 있는데요. 디렉토리구조는 트리구조에 속하는데요. …
  • Most searched keywords: Whether you are looking for OKKY – 자료구조랑 알고리즘의 차이? 간단히 컴퓨터 디렉토리 구조가 자료구조와 알고리즘이 둘다 있는 형태라 볼수 있는데요. 디렉토리구조는 트리구조에 속하는데요.
  • Table of Contents:
OKKY - 자료구조랑 알고리즘의 차이?
OKKY – 자료구조랑 알고리즘의 차이?

Read More

자료 구조와 알고리즘의 차이는 무엇인가?

  • Article author: portpolio.jjeun.com
  • Reviews from users: 4395 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 자료 구조와 알고리즘의 차이는 무엇인가? 자료구조와 알고리즘은 프로그래밍 공부할때의 가장 기본이 되는 베이스입니다. 자료구조와 알고리즘은 묶어서 다루는 경우가 많은데 둘의 차이점이 … …
  • Most searched keywords: Whether you are looking for 자료 구조와 알고리즘의 차이는 무엇인가? 자료구조와 알고리즘은 프로그래밍 공부할때의 가장 기본이 되는 베이스입니다. 자료구조와 알고리즘은 묶어서 다루는 경우가 많은데 둘의 차이점이 … 자료구조와 알고리즘은 프로그래밍 공부할때의 가장 기본이 되는 베이스입니다. 자료구조와 알고리즘은 묶어서 다루는 경우가 많은데 둘의 차이점이 궁금하신 분들을 위해서 자료를 만들어 보았습니다 간단한게 정..
  • Table of Contents:

태그

‘developalgorithm’ Related Articles

티스토리툴바

자료 구조와 알고리즘의 차이는 무엇인가?
자료 구조와 알고리즘의 차이는 무엇인가?

Read More

자료구조와 알고리즘에 대해서

  • Article author: juyeop.tistory.com
  • Reviews from users: 42444 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 자료구조와 알고리즘에 대해서 2019년 2학기 학교 전공과목인 C언어 자료구조와 알고리즘 수업을 통해 … 저는 인터넷에 자료구조와 알고리즘의 차이점을 알아보기 위해 검색을 … …
  • Most searched keywords: Whether you are looking for 자료구조와 알고리즘에 대해서 2019년 2학기 학교 전공과목인 C언어 자료구조와 알고리즘 수업을 통해 … 저는 인터넷에 자료구조와 알고리즘의 차이점을 알아보기 위해 검색을 … 안녕하세요, 오늘은 오랜만에 새로운 주제에 대해서 글을 작성하려고 합니다. 오늘 작성하는 글의 주제는 자료구조와 알고리즘이며 개념과 기초에 대해서 먼저 소개하려고 합니다. 🤷‍♂️ 자료구조와 알고리즘..
  • Table of Contents:

글 쓰는 개발자

자료구조와 알고리즘에 대해서 본문

티스토리툴바

자료구조와 알고리즘에 대해서
자료구조와 알고리즘에 대해서

Read More

한반가 :: 자료구조 공부 #1 (자료구조와 알고리즘)

  • Article author: thesauro.tistory.com
  • Reviews from users: 47517 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 한반가 :: 자료구조 공부 #1 (자료구조와 알고리즘) 자료구조와 알고리즘은 프로그램을 작성할때 연관성이 있는데, 이떄 알고리즘은 넘겨받은 데이터(자료)를 가공하는 방법을 나타내고 자료구조는 이 넘겨 … …
  • Most searched keywords: Whether you are looking for 한반가 :: 자료구조 공부 #1 (자료구조와 알고리즘) 자료구조와 알고리즘은 프로그램을 작성할때 연관성이 있는데, 이떄 알고리즘은 넘겨받은 데이터(자료)를 가공하는 방법을 나타내고 자료구조는 이 넘겨 … # 자료구조란 무엇일까? 자료구조는 컴퓨터용어로 설명을 하자면 스택, 리스트, 큐, 사전, 그래프 등의 데이터를 표현하는 형식을 말하는것이다. 일상생활에 비유하여 표를 만들어 설명을하자면, 일상생활속 예 해..
  • Table of Contents:

네비게이션

자료구조 공부 #1 (자료구조와 알고리즘)

# 자료구조란 무엇일까

# 알고리즘은 무엇일까

# 자료구조와 알고리즘의 관계는 무엇일까

사이드바

검색

티스토리툴바

한반가 :: 자료구조 공부 #1 (자료구조와 알고리즘)
한반가 :: 자료구조 공부 #1 (자료구조와 알고리즘)

Read More

자료구조와 알고리즘 이란?

  • Article author: jindream6128.tistory.com
  • Reviews from users: 27497 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 자료구조와 알고리즘 이란? “자료구조”는 메모리를 어떻게 효율적으로 사용하며, 실행 속도를 빠르고, 정확하게 처리할 수 있을까를 궁극적인 목표로 두고 있다. “알고리즘”은 이러한 … …
  • Most searched keywords: Whether you are looking for 자료구조와 알고리즘 이란? “자료구조”는 메모리를 어떻게 효율적으로 사용하며, 실행 속도를 빠르고, 정확하게 처리할 수 있을까를 궁극적인 목표로 두고 있다. “알고리즘”은 이러한 … 자료구조와 알고리즘이란? 공부를 할 때마다, 자료구조, 알고리즘은 중요하다는 이야기는 많이 들어왔는데 정확한 차이가 무엇인지를 구분할 수 없어, 문득 찾아보게 되었다. 자료구조 자료구조란? 서비스나, 어플..
  • Table of Contents:

자료구조

알고리즘

자료구조 알고리즘

관련글

댓글2

공지사항

최근글

인기글

전체 방문자

자료구조와 알고리즘 이란?
자료구조와 알고리즘 이란?

Read More

[자료구조] 자료구조? 왜 그렇게 중요할까 — re-code-cord

  • Article author: re-code-cord.tistory.com
  • Reviews from users: 6817 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [자료구조] 자료구조? 왜 그렇게 중요할까 — re-code-cord 간단히 말해서, 자료구조는 데이터를 상황에 맞게 저장하기 위한 구조이고, 알고리즘은 자료구조에 있는 데이터를 활용해 어떠한 문제를 해결하기 위한 … …
  • Most searched keywords: Whether you are looking for [자료구조] 자료구조? 왜 그렇게 중요할까 — re-code-cord 간단히 말해서, 자료구조는 데이터를 상황에 맞게 저장하기 위한 구조이고, 알고리즘은 자료구조에 있는 데이터를 활용해 어떠한 문제를 해결하기 위한 … 자료구조란? 자료구조를 왜 알아둬야 할까?  자료구조는 컴퓨터과학에서 알고리즘과 함께 가장 중요한 기초이론이다. 왜 중요할까? 정의를 한번 살펴보면, 자료구조란 데이터에 편리하게 접근하고, 변경하기 위해..
  • Table of Contents:

블로그 메뉴

인기 글

최근 댓글

최근 글

티스토리

티스토리툴바

[자료구조] 자료구조? 왜 그렇게 중요할까 — re-code-cord
[자료구조] 자료구조? 왜 그렇게 중요할까 — re-code-cord

Read More

자료구조와 알고리즘 왜 공부해야 할까? :: muntari Log

  • Article author: codermun-log.tistory.com
  • Reviews from users: 49450 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 자료구조와 알고리즘 왜 공부해야 할까? :: muntari Log 사실 누구라도 자료구조와 알고리즘이 중요하다는 사실을 알고 있다. 그렇다면 왜 중요한 걸까? 대체 왜?? 실제로 프레임워크나 프로그래밍 언어 능력 … …
  • Most searched keywords: Whether you are looking for 자료구조와 알고리즘 왜 공부해야 할까? :: muntari Log 사실 누구라도 자료구조와 알고리즘이 중요하다는 사실을 알고 있다. 그렇다면 왜 중요한 걸까? 대체 왜?? 실제로 프레임워크나 프로그래밍 언어 능력 … 사실 누구라도 자료구조와 알고리즘이 중요하다는 사실을 알고 있다. 그렇다면 왜 중요한 걸까? 대체 왜?? 실제로 프레임워크나 프로그래밍 언어 능력이 조금 부족하더라도 자료구조와 알고리즘에 대한 이해가 탄..성실과 기본기를 중요시하는 주니어 개발자입니다.
  • Table of Contents:

TAG

관련글 관련글 더보기

인기포스트

티스토리툴바

자료구조와 알고리즘 왜 공부해야 할까? :: muntari Log
자료구조와 알고리즘 왜 공부해야 할까? :: muntari Log

Read More


See more articles in the same category here: Top 152 tips update new.

[Algorithm] 알고리즘이란? 알고리즘 vs 자료구조 차이란?

728×90

반응형

유튜브 보다가 문득 떠올라서 알고리즘이 뭔지, 알고리즘과 자료구조 차이는 뭔지 확인하고 정리하기로 했다.

알고리즘의 사전적 정의는 아래와 같다.

어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합. 여러 단계의 유한 집합으로 구성되는데, 각 단계는 하나 또는 그 이상의 연산을 필요로 한다.

뭔가가 입력되면 어떤 처리가 되어 내가 원하는 출력이 나오게 되면 그것이 알고리즘인 것 같다.

어딘지 딥러닝이랑 비슷한 느낌이 들긴 하는데, 일단 알고리즘이라는 단어의 뜻에 집중한다. 이번엔 위키백과의 내용이다.

https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

알고리즘은 어떤 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다. 즉, 문제 해결에 필요한 계산 절차 또는 처리 과정의 순서 를 뜻한다. 프로그램 명령어의 집합을 의미하기도 한다. 알고리즘은 연산, 데이터 마이닝(기계 학습) 또는 자동화된 추론을 수행한다.

https://en.wikipedia.org/wiki/Algorithm

알고리즘은 특정 문제를 해결하거나 계산을 수행하기 위해 잘 정의되고 컴퓨터로 구현 가능한 명령어의 유한 시퀀스 다. 알고리즘은 항상 모호하지 않으며 계산, 데이터 처리, 자동화된 추론 및 기타 작업을 수행하기 위한 사양으로 사용된다. 대조적으로 휴리스틱은 최적이 아닐 수 있지만 상황에 따라 충분한 솔루션을 생성하기 위해 실용적인 방법 또는 다양한 추정을 사용하는 문제해결에 사용되는 기술 이다.

알고리즘은 유한한 공간, 시간 내에서 함수를 계산하기 위한 잘 정의된 형식 언어로 표현될 수 있다. 초기 상태 및 초기 입력(비어있을 수 있다)에서 시작해 명령어는 실행 시 유한의 잘 정의된 연속 상태를 거쳐, 결국 “출력”을 생성하는 계산을 설명하고 최종 종료 상태에서 종료된다. 한 상태에서 다음 상태로의 전환이 반드시 결정적인 것은 아니다.

결국 정리하면 문제 해결방법이란 거다. 하지만 단순한 해결방법이 아닌 항상 명확한 해결방법이란 게 위키백과를 통해 정리한 알고리즘의 정의다.

그럼 라면 끓이는 법도 알고리즘, 수저 차리는 것부터 시작해서 밥 먹고 치우는 것도 하나의 알고리즘이라 볼 수 있다.

그럼 이 알고리즘은 왜 필요한 걸까? 그리고 어떤 장점이 있길래 개발자 취업시장과 인터넷 등지에서 그렇게 알고리즘을 말하는 걸까? 가끔 알고리즘으로 사람을 판단하는 광기의 알고리즘무새가 보이기도 한다

The Importance of Algorithms in Computer Programming

1. 컴퓨터 프로그램의 효율성 향상 : 프로그래밍에는 문제를 해결하는 다양한 방법이 있다. 그러나 사용 가능한 방법의 효율성은 다양하다. 어떤 방법은 다른 것들보다 더 정확한 답변을 제공하는 데 적합하다. 알고리즘은 문제를 해결하는 가장 좋은 방법을 찾는 데 사용된다. 그리 함으로써 프로그램의 효율성이 향상된다. 프로그래밍과 관련해서 효율성은 다른 의미로 쓰일 수 있다. 그중 하나는 소프트웨어의 정확성이다. 최상의 알고리즘을 쓰면 컴퓨터 프로그램이 매우 정확한 결과를 만들 수 있다. 또 다른 의미는 속도다. 프로그램이 문제를 실행하는 속도를 향상하기 위해 알고리즘을 쓸 수 있다. 단일 알고리즘은 프로그램이 문제를 해결하는 데 걸리는 시간을 줄일 수 있다.

2. 자원의 적절한 활용

일반적인 컴퓨터에는 다른 자원이 있는데 그 중 하나가 컴퓨터 메모리다. 실행 단계 동안 컴퓨터 프로그램은 약간의 메모리가 필요하다. 일부 프로그램은 다른 프로그램보다 더 많은 메모리 공간을 사용한다. 컴퓨터 메모리의 사용량은 사용된 알고리즘에 따라 다르다. 알고리즘을 올바르게 선택하면 프로그램이 최소한의 메모리를 쓰게 된다. 메모리와 별도로 알고리즘은 프로그램에 필요한 처리 능력의 양을 결정할 수 있다.

https://stackoverflow.com/questions/3962280/whats-the-importance-of-data-structures-and-algorithms-for-programming

효율적인 코드를 작성하고 최적 또는 거의 최적의 방법으로 문제를 해결하는 데 도움이 된다. 이것이 없다면 넌 바퀴를 재발명하게 될 것이다. 또한 더 나은 설계, 구현을 장려함으로써 코드를 보다 쉽게 유지 관리할 수 있도록 코드를 구조화하는 데 도움이 된다.

이미 문제를 해결하는 도구가 발명되어 있는데 알고리즘을 쓰지 않으면 쓸데없이 다시 바퀴부터 만들 수 있다는 말 같다. 확실히 이런 경우가 생기면 작업 시간은 늘어나고 아웃풋이 생기지 않으니 효율적으로 일한다고는 볼 수 없겠다.

그럼 이 알고리즘의 종류는 어떤 것들이 있을까? 한번 찾아봤더니 종류가 꽤 많아서 다 적기 귀찮으니 링크로 대체한다.

http://dawoonjeong.com/algorithm-categories/

그리고 알고리즘의 특성은 아래와 같다고 한다. 꼭 이것들을 모두 만족해야 하는 건 아닌듯하지만 지키면 좋다 정도인 것 같다.

https://arisu1000.tistory.com/27673

유한성 : 알고리즘의 단계들은 반드시 유한한 횟수를 거친 후에 종료돼야 한다.

효율성 : 모든 과정은 명백히 실행(검증) 가능한 것이어야 한다

명확성 : 알고리즘의 각 단계는 명확한 명령어로 정의돼야 한다

입력 : 알고리즘은 0 또는 그 이상의 입력들을 갖는다. 즉 밖에서 들어오는 데이터가 없거나 1개 이상이다.

출력 : 알고리즘은 하나나 그 이상의 출력들을 갖는다. 즉 최소한 출력이 1개라도 있어야 한다.

그럼 자료구조란 뭘까? 자료와 구조를 나눠서 검색해보면 이렇게 나온다.

자료 : 연구나 조사 따위의 바탕이 되는 재료, 만들거나 이루는 데 바탕이 되는 물자나 재료

구조 : 부분이나 요소가 어떤 전체를 짜 이룸. 또는 그렇게 이뤄진 얼개, 일정한 설계에 따라 여러 가지 재료를 얽어서 만든 물건

단어 각각을 놓고 보면 자료구조는 어떤 것의 재료가 되는 것(자료)을 엮어서 만들어낸 어떤 것이라는 뉘앙스의 뜻일 것 같다.

이제 자료구조의 사전적 정의를 확인해보자.

자료구조 : 추상적으로 나타낸 자료의 모습과 그것을 다루는 연산에 대한 정의

유추한 뜻과는 제법 많이 다르다. 추상적으로 나타낸 자료의 모습이란 뭘까? 그 자료를 다루는 연산에 대한 정의?

다음으로 위키백과에선 뭐라고 말하는지 확인해봤다.

https://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0

자료구조는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미 한다. 더 정확히 말해, 자료구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령 을 의미한다.

하나 이상의 데이터 간의 관계, 그리고 데이터에 적용하는 함수들을 다루는 것이 자료구조인 것 같다.

다른 사람들은 자료구조의 정의를 어떻게 설명해놓았는지 확인해보자.

https://searchsqlserver.techtarget.com/definition/data-structure

자료구조는 데이터를 구성, 처리, 검색 및 저장하기 위한 특수한 형식이다. 자료구조에는 몇 가지 기본, 고급 유형이 있으며 모두 특정 목적에 맞게 데이터를 배열하도록 설계됐다. 자료구조는 사용자가 적절한 방식으로 필요한 데이터에 쉽게 접근하고 작업할 수 있도록 한다…(중략)… 각 자료구조에는 데이터 값, 데이터 간의 관계 및 (경우에 따라) 데이터에 적용할 수 있는 함수에 대한 정보가 포함된다.

https://www.javatpoint.com/data-structure-tutorial

자료구조 이름은 메모리에서 데이터를 구성하는 것을 나타낸다. 이 데이터 구성 방법에는 여러 가지가 있다. 배열은 데이터가 순차적으로 저장되는 메모리 요소의 모음이다. 즉, 배열이 요소를 연속적으로 저장한다고 말할 수 있다. 이 데이터 구성은 자료구조 배열의 도움으로 수행된다. 자료구조는 C, C++, JAVA 등과 같은 프로그래밍 언어가 아니다. 메모리의 데이터를 구조화하기 위해 모든 프로그래밍 언어에서 사용할 수 있는 알고리즘 세트다. 메모리에 데이터를 구조화하기 위해 n개의 알고리즘이 제안됐으며, 이런 모든 알고리즘을 추상 데이터 유형이라고 한다.

https://www.javatpoint.com/data-structure-introduction

자료구조는 데이터를 효율적으로 사용할 수 있도록 컴퓨터에서 데이터를 효과적으로 저장하고 구성하는 방법을 제공하는 데이터 요소 그룹 으로 정의할 수 있다. 자료구조의 몇 가지 예로는 배열, 링크드리스트, 스택, 큐 등이 있다.

자료구조는 컴퓨터 과학의 거의 모든 측면(OS, 컴파일러 설계, 인공지능, 그래픽 등)에서 널리 쓰인다. 자료구조는 개발자가 데이터를 효율적으로 처리할 수 있도록 하므로 많은 컴퓨터 과학 알고리즘의 주요 부분이다. 소프트웨어의 주요 기능은 사용자의 데이터를 가능한 한 빨리 저장하고 검색하는 것이므로 SW 또는 프로그램의 성능 향상에 중요한 역할을 한다.

https://www.integralist.co.uk/posts/data-types-and-data-structures/

자료구조는 효율적인 접근 및 수정을 허용하는 방식으로 저장, 구성되는 데이터 유형 ‘값’의 모음 이다. 어떤 경우에는 자료구조가 특정 데이터 유형의 기본 구현이 될 수 있다. 예를 들어 복합 데이터 유형은 기본 데이터 유형 또는 기타 복합 유형으로 구성된 자료구조인 반면, 추상 데이터 유형은 특정 데이터에 대한 일련의 동작(어떤 의미에서 인터페이스와 거의 유사함)을 정의한다. 구조는 해당 데이터 유형에 대한 구체적인 구현으로 사용될 수 있다.

자료구조는 일반적으로 4가지 형식이 있다.

1. 리니어 : 배열, 리스트

2. 트리 : 바이너리, 힙, 공간 분할(space partitioning) 등

3. 해시 : 분산 해시 테이블(distributed hash table), 해시 트리 등

4. 그래프 : 결정(decision), 지시(directed), 비순환(acyclic) 등

다른 글들을 추가로 더 찾아봤지만 결론은 자료구조는 데이터에 효율적으로 접근하고 그 데이터를 수정하기 위해 사용되는 데이터들의 모음이라는 뜻을 갖고 있었다.

여기서 알고리즘과 자료구조의 차이를 알 수 있다.

알고리즘 : 문제 해결에 필요한 절차들의 순서

자료구조 : 데이터에 효율적으로 접근하고 수정할 수 있도록 하는 데이터들의 모음

그런데 이 2가지는 왜 쓰이는 걸까? 옛날 뚱땡이 모니터의 컴퓨터를 쓰던 시절이라면 몰라도 요즘은 SSD가 테라바이트 단위로 나오고, 램 또한 64GB 이상을 장착할 수 있는 메인보드 등 좋은 컴퓨터 부품들이 넘쳐나는 시대다. 자료구조와 알고리즘은 왜 필요한 걸까?

카메라를 하나 사려고 한다고 가정한다. 그런 당신의 눈에 마음에 드는 디자인의 카메라가 있어서 봤더니, 내 눈으로 보는 것과 완전 동일한 화질의 사진을 제공하는 카메라다.

그런데 사진을 한번 찍으면 출력하는 데 몇 시간이 걸리고, 뽑은 사진을 컴퓨터에 저장하려고 하니 1장에 몇 기가바이트나 한다. 이 카메라를 구매할 것인가?

대다수의 사람은 사지 않을 것이다. 왜냐면 카메라의 기능은 정말 매력적이다. 내 눈으로 보는 것과 똑같은 화질의 사진을 제공하니까. 그런데 그걸 얻기 위해 수반되는 비용들이 너무 크다. 바꿔 말해 좋은 기능에 반해 실행 시간이 거지같이 길다. 또한 메모리 효율도 거지 같다.

그러나 누구는 이렇게 말할 수 있다. 시스템 설계 부분에서 고려해야 하는 문제인 거 같은데 개발자는 신경 쓰지 않아도 되는 거 아니냐고. 개미 눈물만큼의 일리는 있다.

이번엔 어떤 정보 검색 앱이 있다고 가정한다. UI도 세련됐고 UX도 흠잡을 데 없으며, 인공지능도 도입되어 있어서 내가 검색한 내용과 유사한 또는 다른 사람들이 많이 찾아본 내용들을 같이 보여준다. 원하는 내용이 pdf나 txt 파일인 경우 이것의 빠른 다운로드 또한 지원한다. 안드로이드/아이폰을 모두 지원하는 것은 말할 것도 없다.

그런데 앱을 실행하려면 아래와 같은 조건을 만족해야 한다.

앱 실행까지 걸리는 시간 : 1시간

검색 후 결과를 받아보기까지 걸리는 시간 : 3시간

위의 예시들은 터무니없이 극단적이다. 세상의 어떤 카메라 생산자도, 앱 개발자도 저런 식으로 만들진 않을 것이다.

하지만 앱 최적화 작업은 왜 할까? 웹 페이지에서 다음 페이지의 로딩을 0.n 초라도 빠르게 하려는 이유는 뭘까? 삼성 등 유명한 회사에서 출시되는 기기들은 이전 세대보다 더 빠른 속도를 가진 게 당연한 걸까?

소비자가 그걸 원하기 때문이다. 소비자는 더 빠르고 눈으로 확실히 보이는 개선된 걸 원한다. 이 소비자의 니즈를 만족시키는 제품을 만들어 팔아야 기업의 매출도 오른다. 그래서 기업과 그곳에 속한 개발자들은 종래의 것보다 더 효율적이고 성능 좋은 방법을 추구한다.

이것을 가능하게 해주는 것이 자료구조와 알고리즘이다. 상황에 따라 적절한 자료구조와 알고리즘을 사용하면 더 좋은 프로그램(제품)이 만들어지고, 소비자가 원하는 데이터까지 접근하는 데 걸리는 시간을 획기적으로 줄여준다.

그러나 난 이 글의 결론을 “자료구조와 알고리즘 엄청 중요하니 개발 처음 공부할 때부터 바로 시작하세요!”라고 끝맺으려는 건 아니다. 아직 자전거가 뭔지도 모르고 자전거에 흥미도 붙이지 않았는데 외발자전거 타면서 저글링하는 건 중요한 기술이니 바로 연습하라고 하는 거랑 다를 바가 없다고 생각한다.

일단 개발에 흥미를 붙여야 한다고 생각한다. 그리고 그 언어로 아주 간단한 프로그램이나 웹(텍스트 게임, 아주 간단한 그래픽을 이용한 초간단 키오스크, 회원 가입하면 환영 문구를 보여주는 웹 사이트)을 닥치는 대로 만들어본 뒤, 실행 속도가 내 생각과 달리 획기적으로 거지 같은 경우 자료구조와 알고리즘을 봐야 한다고 생각한다.

알고리즘과 자료구조 물론 중요하긴 하지만, 그 중요함이 개발에 흥미를 붙이고 뭔가를 만들어보는 것보다는 우선순위가 뒤떨어진다고 생각한다.

반응형

자료구조랑 알고리즘의 차이?

자료구조는 말 그대로 자료를 담는 구조입니다.

가장 크게 2가지로 나눈다면

연속된 주소에 담을 것인지, ex)배열

링크형 구조를 사용할 것인지, ex) 링크드 리스트가 가장 큰 차이점일 수 있겠네요.

연속된 주소인데도, 앞에다가 해쉬 함수를 두고 해쉬 테이블로 이용할 수도 있을 것이고요.

Complete Binary Tree인 경우에 Heap을 구현하는데도 사용할 수 있습니다.

연속된 주소이기 때문에, 해당 자료에 접근하는데 걸리는 시간이 상수시간입니다. 즉, O(1)

따라서, Random Access가 가능한 것이죠.

링크형 구조는 링크드 리스트 이후로 배우는 것이, 이진 탐색 트리입니다.

이진 탐색을 하되, 트리 위에서 하는 것이죠.

자료구조는 주로 3가지를 보게 되는데, Search, Insert, Delete하는데 걸리는 시간입니다.

이진 탐색 트리의 경우 모두 O(h)이 걸리고, h은 Tree의 높이 입니다.

그럼 1, 2, 3, 4, 와 같이 순차적으로 입력을 받으면 이진 탐색 트리나 링크드 리스트나 모양이 똑같습니다.

트리의 Balance가 한쪽으로 몰려서 그런 것인데,

이러한 것을 해결하기 위해서 Balance Tree인 AVL Tree 또는 Red Black Tree 등을 배웁니다.

그럼 O(logN)안에 Search가 가능해집니다.

위의 설명을 보고 연속형은 Insert가 O(1)이고, 연결형은 Insert가 O(logN)인데 연결형 자료구조를 왜 쓰냐고 할 수 있습니다. 결국엔 연속형 자료구조는 Search하는데 O(N) 걸리고 연결형 자료구조는 Search하는데 O(logN)이 걸리기 때문입니다. 여기서 N은 입력된 데이터 갯수입니다.

즉, 내가 Insert를 많이 하는 구조가 필요한지 또는 Search를 많이 하는 구조인지에 따라서 알 맞는 자료구조를 선택해야 하고, 이를 통해서 성능이 최적화 됩니다.

그럼 데이터베이스의 경우 Search가 많이 일어나기 때문에 Clustered Index를 구성할 때 연결형 자료구조인 B-Tree를 사용합니다.

Clustered Index에서 사용하는 B-Tree는 결국 2-3-4 Tree라고 보면됩니다.

(실제 DB에서 사용되는 Tree는 4개 이상의 Pointer를 가지고 있겠죠.)

2-3-4 Tree는 하나의 Node에서 2개, 3개 또는 4개의 Pointer가 다른 Node를 바라보고 있습니다.

(단, Root는 제외)

결국에 하나의 노드에 자료가 많이 담길 뿐, 위에 이진트리 탐색처럼 진행하는 것은 동일합니다.

트리의 가장 하단부에는 트리의 모든 데이터가 배열처럼 저장되어 있으며, 이는 정렬되어 있습니다.

이것은 데이터베이스에서는 Range Query라고 해서

SELECT TOP 10 *

FROM dbo.Student with(nolock)

WHERE age > 10

나이가 10인 학생인 데이터를 이진 탐색과 유사하게 찾을 수 있고,

그 이후의 Index를 9개를 더 가져오면 위의 쿼리가 완성되는 것입니다.

그럼 위에 있는 자료구조를 모두 직접 코딩해야 하느냐고 하면 아닙니다.

C++에서는 STL을 사용해도 되고, Java또는 C#의 Collection을 사용해도 되고,

위에서 말한 연속형인지, 링크드형인지 해쉬 함수가 무엇인지 등은 대략적으로 알면 좋겠죠.

또한, 위의 DB처럼 이미 구현된 것은 개념만 알고 사용하면 되겠죠.

알고리즘은 초기에 정렬과 관련된 알고리즘을 소개합니다.

이는 Divide & Conquer와 Randomization을 알려주기 위함입니다.

Divide & Conquer는 결국 큰 문제를 해결하기 위해서 작은 문제로 풀어나가는 것이고,

Merge Sort에서 배열을 T(n) = 2* T(2/n) 처럼 나눠서 O(n log n)시간이 걸리게 됩니다.

즉, 절반으로 나눔으로 인해서 성능이 좋아집니다.

Randomization의 경우에는 Quick Sort에서 볼 수 있습니다.

첫번째 Pivot을 배열의 첫번째 값으로 설정해놨다고 생각하면,

두번째, 세번째 Pivot을 알 수 없습니다.

Pivot 값에 의해서 배열이 나눠지는데, 이것이 랜덤으로 일어나기 때문에 성능이 좋습니다.

최악의 경우가 Best-Case O(n log n), Worst-Case O(n^2)인데, 평균 성능은 O(n log N)입니다.

즉, 많은 경우에서 Worst-Case는 발생하지 않는다는 것을 알 수 있습니다.

그 외에는 Graph 이론을 통해서, Prim Algorithm과 Kruskal Algorithm을 통해서

MST(Minimum Spanning Tree) 를 배우는데 이는 Weight가 최소인 Tree를 배웁니다.

예를 들어, 전화국에서 이미 모든 기지국과 연결을 해놨는데, 분명 필요 없는 연결이 있어서

유지보수 비용을 최소화하고 싶다거나 이런 경우에 사용할 수 있습니다.

Prim Algorithm의 경우 Greedy Algorithm을 사용합니다.

즉, 최소값을 가지는 것만 합하다 보면 정말 최소값을 가진 Tree가 나올 것이라는 추측을 가지고 만들고 이를 증명합니다.

Kruskal Algorithm의 경우에는 Union-Find라는 자료구조를 사용해서, 위에서 말했던 것처럼 자료구조의 필요성을 알 수 있습니다.

2개의 알고리즘 모두 MST를 찾지만, 서로의 생각이 다릅니다. 이런것이 알고리즘이 필요한 이유겠죠.

그 외에, Dijkstra Algorithm을 통해서 하나의 Node와 다른 Node 사이의 최단거리를 구하는 알고리즘을 배우는데, 이는 네트워크 Router에서 사용되는 알고리즘이라고 언뜻 본 것 같네요.

Floyd Algorithm은 전체 Node에 대해서 다른 Node사이의 최단거리를 구하는 알고리즘인데, Dynamic Programming을 사용합니다. 즉, 이전에 수행되는 결과값을 현재에도 사용해서 더 빠르게 값을 찾는 기술이라고 보면됩니다.

그럼, Dijkstra Algorithm을 N개의 Node에 대해서 수행한 것과, Floyd Algorithm을 수행한 것과 동일한 결과를 가지는데 이것이 왜 필요한지도 살펴볼 수 있을 것이고요.

Dijkstra Algorithm의 경우에는 Edge의 Weight가 양수인 경우에만 수행되는데, Edge의 Weight가 음수가 섞인 경우에는 Bellman-Ford 알고리즘을 사용하게 됩니다.

위에서 배우는 알고리즘은 Classic한 그래프 알고리즘이므로, 왠만한 그래프 문제는 모두 풀 수 있게 됩니다.

알고리즘을 무식하게 푸는 것을 대부분 Exhaustive Search 한다고 봅니다. 즉, 모든 경우의 수에 대해서 생각하고 비교하는 방식인데요.

Dynamic Programming을 통해서 Exhaustive Search를 하면 시간복잡도가 현실에서 사용할만한 시간이 됩니다.

즉, Dynamic Programming은 이전에 사용했던 값을 사용해서 현재의 결과를 찾을 수 있는 점화식을 생성해서 사용하게 되는데요.

여기서 큰 문제를 어떻게 작은 문제로 만들 것인지가 관건이고, 설명할 때 가장 많이 사용하는 예제는 피보나치 수열이라고 볼 수 있겠네요.

결론적으로, 알고리즘을 통해서 컴퓨터로 표현할 수 있는 세상의 모든 문제를 풀 수 있다는 것입니다. 기존의 방법론에 대해서 배우고 자신이 해결하려는 문제에 대해서 가장 적당한 방법을 사용하거나, 이를 응용해서 문제를 해결하는 것이 알고리즘을 배우는 이유겠죠.

자료 구조와 알고리즘의 차이는 무엇인가?

자료구조와 알고리즘은 프로그래밍 공부할때의 가장 기본이 되는 베이스입니다.

자료구조와 알고리즘은 묶어서 다루는 경우가 많은데 둘의 차이점이 궁금하신 분들을 위해서 자료를 만들어 보았습니다

간단한게 정의한다면 아래와 같습니다.

Data strucutre(자료구조)

자료를 처리하는 방법

Algorithm(알고리즘)

문제를 처리하는 절차

보통 자료구조와 알고리즘 책들은 두껍고 글만 빼곡할 것 같지만, 그림이 많고 가독성이 좋은 책 3권을 추천드립니다.

1단계,

그림으로 배우는 알고리즘

알고리즘은 머릿속으로 그림을 그려가면서 이해해야 합니다. 자세하게 그림으로 알고리즘의 개념을 이해할 수 있습니다.

2단계,

c언어로 쉽게 풀어쓴 자료구조

일상 속의 적절한 예시와 코드로 자료구조에서 기본적으로 알아야 할 스택,큐,트리,그래프 등등 마스터 할 수 있습니다.

이 외에 깊게 공부하고 싶다면

윤성우의 열혈 자료구조

윤성우 시리즈 is 뭔들(다 좋음)

이 책을 추천하지만 자료구조의 베이스를 마스터하고 읽어보시길 추천합니다.

하단에는 제가 자료구조와 알고리즘에 대해서 피피티로 정리한 내용입니다.

So you have finished reading the 자료구조 알고리즘 차이 topic article, if you find this article useful, please share it. Thank you very much. See more: 자료구조 알고리즘 pdf, 자료구조 정리 pdf, 자료구조 책, 자료구조 알고리즘 책, 자료구조 독학, 자료구조 종류, 자료구조 강의, 프로그램 = 자료구조 + 알고리즘

Leave a Comment