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

준우·2022년 4월 7일
0
post-thumbnail

🤔 컴퓨터 공학을 공부하는 자세

  • 문과: 일단 외우고 나서, 이해하기 시작
  • 이과: 일단 원리를 파악하고 나서 원리를 적용해가며 이해하기 시작

프로그래밍은 작은 원리를 적용하는 방법을 익히고 연습을 통해 익숙해져야 함.

아직 프로그래밍이 익숙하지 않다면?

최소 10줄의 코드를 작성해 간단한 문제를 스스로 만들 수 있는 기초 역량을 쌓은 뒤에 자료구조 & 알고리즘을 공부하는 것이 좋다. 프로그래밍을 시작하는 단계에서는 어떻게든 코드가 굴러가도록 만든 다음, 속도가 너무 느리다든지의 문제를 인지한 뒤 코드 최적화를 위해 자료구조와 알고리즘 적용이 필요한 경우 배운다면 더욱 이해가 잘 될 것이다.

프로그래밍은 OK, BUT 파이썬이 익숙하지 않다면?

프로그래머스, 생활코딩 등의 사이트 혹은 서적이나 인강 등으로 파이썬 기초 문법을 익히고 기초 문제를 풀어보는 것이 좋다.

자료구조란?

  • 대량의 데이터를 효율적으로 관리할 수 있는 데이터 구조
  • 효율적으로 데이터를 처리하기 위해 데이터의 특성에 따라 체계적으로 데이터를 구조화하는 것이다.
  • 필요한 작업별(검색, 읽기, 삽입, 삭제)로 어떤 데이터 구조를 사용하느냐에 따라 코드 효율/속도가 크게 달라진다.
  • 각각의 자료구조에 대한 이해가 있어야 상황에 맞추어 사용할 수 있다.

현실 세계의 가장 대표적인 데이터 구조는 사전, 우편번호, 학생부 등이 있다. 예를 들어 5자리의 우편번호 중 앞3자리는 시/군/구/자치구, 뒤2자리는 일련번호로 하여 국가의 기초구역을 제공하는 것이다. 학생부는 한 각 학생별 학년과 반, 번호를 부여해 관리한다.

기본 자료구조

선형(linear) 자료구조 : 배열, 연결리스트, 스택, 큐
비선형(non-linear) 자료구조 : 트리, 그래프

알고리즘이란?

  • 목적을 달성하기 위한 여러가지 행동들
  • 어떤 문제를 풀기 위한 절차 및 방법
  • 특정한 입력을 넣으면 원하는 출력을 얻을 수 있는 프로그래밍
  • 최단 거리 찾기, 사진 압축, 비밀번호 암호화 등

일상 속 알고리즘 예시

  • 백종원 레시피
  • 직장인의 출근 전 아침 루틴

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

어떤 자료구조와 알고리즘을 사용하느냐에 따라 프로그래밍의 성능이 아주 크게 차이날 수 있다. 따라서 자료구조와 알고리즘을 공부하는 것은 프로그래밍을 하기 위해서 기술과 역량을 익히는 것이다.

시간 복잡도 (Time Complexity)

그런데 어떤 알고리즘이 "좋은" 알고리즘일까?
그 판단의 기준은 시간 복잡도이다.

시간복잡도란 프로그램이 실행되는 단위를 기준으로 하는 것을 말한다.
그러니까 1분, 1초 같은 시간 단위로 실행 시간을 측정하는 것이 아니라
프로그램 실행 후 완료까지 걸리는 단계의 수를 기준으로 알고리즘을 판단하는 것이다.
컴퓨터 하드웨어마다 차이가 있어 실행 시간을 기준으로 한다면 정확한 판단을 할 수 없어
알고리즘의 훌륭함 정도는 얼마나 단계가 적느냐에 따라 결정된다.

1개의 댓글

comment-user-thumbnail
2022년 5월 7일

안녕하세요. 시간복잡도에서 프로그램 실행 후 완료까지 걸리는 단계의 수를 측정할 수 있는 표기법이 있을까요?

답글 달기