알고리즘/자료구조 #0

Duboo·2023년 8월 24일
1
post-thumbnail

자료구조(資料構造, 영어: data structure)는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다. 이러한 자료구조의 선택문제는 대개 추상 자료형의 선택으로부터 시작하는 경우가 많다. 효과적으로 설계된 자료구조는 실행시간 혹은 메모리 용량과 같은 자원을 최소한으로 사용하면서 연산을 수행하도록 해준다.


위 설명을 쉽게 풀자면 자료구조는 많은 *데이터들을 관리/저장/수정등 사용하는 방법을 정의한것

*데이터는?

모든 것이 데이터가 될 수 있지만 데이터 자체만으로 특별한 정보를 제공하진 않는다.

단순히 숫자값의 데이터만이 혹은 문자값의 데이터만이 어떠한 정보를 가지고 있지는 않는것 처럼

즉, 데이터를 분석하고 활용해야만 그 의미를 가지고 사용할 수 있으며 사용하려는 목적에 맞게 정재해서 사용해야한다.

다시 말해 자료구조는 데이터를 효율적으로 접근, 관리, 저장 등 효율적인 코드를 작성하기 위함과 다양한 문제를 마주할 때 많은 자료구조를 알아두고 특정 문제에 대한 상황에 맞게 보다 효율적인 자료구조를 활용하여 문제를 해결하기 위해 필요하다.


선형 구조비선형 구조
배열(Array)트리(Tree)
연결 리스트(Linked List)그래프(Graph)
스택(Stack)
큐(Queue)

주어진 문제에 대해 다양한 해결책이 필요한 만큼 다양한 자료구조가 존재한다.

적절한 자료구조를 선택하는 기준

  • 처리 시간
  • 크기
  • 활용 빈도
  • 갱신 정도
  • 프로그램의 용이성

자료구조에 항상 같이 붙어다니는 단어인 알고리즘

알고리즘(영어: algorithm), 셈법은 수학과 컴퓨터과학, 전산언어학 등에서 사용되는, 문제 해결 방법을 정의한 '일련의 단계적 절차'이자 어떠한 문제를 해결하기 위한 '동작들의 모임'이다. 계산을 실행하기 위한 단계적 절차를 의미하기도 한다. 즉, 문제 풀이에 필요한 계산 절차 또는 처리 과정의 순서를 뜻한다. 프로그램명령어의 집합을 의미하기도 한다.
출처 : wikipedia

알고리즘은 문제를 해결하기 위한 방법/절차을 공식으로 표현한 형태로 즉, 문제를 풀기 위해 필요한 계산절차/방법/과정이라 할 수 있다.

자료구조와 알고리즘은 왜 항상 같이 말할까

알고리즘이 문제를 해결하기 위한 방법이라면 문제를 효율적으로 해결하기 위한 방법은 자료구조이다.

어떤 자료구조를 선택했냐에 따라 알고리즘이 달라지는데, 다시말해 적절한 자료구조의 선택은 좋은 알고리즘을 따라오게 만든다.

적절한 자료구조의 선택이 효율적인 알고리즘의 선택이 된다.

이런 알고리즘은 반드시 가져야할 특징이 있다.

  1. 문제를 풀기 위한 입력
  2. 문제를 해결한 뒤 결과값인 출력
  3. 실행시킨 코드가 일정한 시간 내에 반드시 종료되어야 하는 유한성
  4. 문제에 대한 정확한 출력 값을 내는 정확성
  5. 동인한 문제에 한해 적용 가능해야하는 일반성

알고리즘으로 문제를 보는 관점

  • 먼저 주어진 문제를 분석한다.
  • 문제 해결에 관련된 정보를 수집하고 데이터를 적절한 형태로 표현한다.
  • 해결하기 어려운 큰 문제들을 해결하기 쉬운 작은 문제 여러개로 쪼갠다.
  • 문제에서 규칙이 있는지 확인한다.
  • 문제에서 필요없는 부분을 걷어내고 복잡한 문제들을 단순화시킨다.
  • 위 과정을 모아 문제를 단계적으로 해결하기 위한 방법과 설명을 설계한다.
  • 설계한 알고리즘의 정확성과 효율성 등을 평가하고 설계 기반으로 코드를 작성한다.
profile
둡둡

0개의 댓글