기술과 산업/아키텍처

[학습] 자료구조와 알고리즘

B컷개발자 2021. 3. 24. 08:06
728x90

자료구조란?

 

  • 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미
  • 코드상에서 효율적으로 데이터를 처리하기 위해, 데이터 특성에 따라, 체계적으로 데이터를 구조화해야 함

 

효율적으로 데이터를 관리하는 예

  • 우편번호: 5자리 우편버호로 국가의 기초구역을 제공
    • 5자리 우편번호에서 앞 3자리는 시, 군, 자치구를 표기하고 뒤 2자리는 일련번호로 구성
  • 학생 관리: 학년, 반, 번호를 학생에게 부여해서 학생부를 관리
    • X학년, X반, X번 학생
    • 마약 위 관리 기법이 없다면 300명 학생 중 특정 학생을 찾기 위해서는 전체 학생부를 모두 훑어야 한다.

 

대표적인 자료구조

  • 배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등

현실 세계의 가장 대표적인 자료 구조

  • 사전

 

알고리즘이란?

  • 어떤 문제를 풀기 위한 절차 혹은 방법
  • 어떤 문제에 대해서 특정한 '입력'을 넣으면 원하는 '출력'을 얻을 수 있도록 만드는 방법
  • 고려사항
    • 시간 (얼마의 시간이 걸리는가?)
    • 공간 (얼마의 저장 공간을 차지하는가?)

현실 세계의 가장 대표적인 알고리즘

  • 요리 레시피 (백종원 레시피 등)

 

자료구조와 알고리즘이 중요한 이유

  • 어떤 자료구조와 알고리즘을 쓰느냐에 따라서 성능이 차이난다.

 

결국 프로그래밍을 잘 할 수 있는 기술과 역량을 익히고, 검증할 수 있다.

 

무엇을 활용하여 어떻게 배울 수 있는가?

  • 어떤 언어로든 자료구조/알고리즘을 익힐 수 있다.
  • 이전에는 무조건 C/C++로만 작성하도록 하는 경우가 많았다.
  • 최근에는 언어로 인한 제약/평가는 없어졌다.
    • 요즘 가장 쉽고 빠르게 자료구조/알고리즘을 익힐 수 있는 언어로 파이썬이 각광받음
    • 협업에서도 파이썬은 많이 사용됨.

 

728x90