자료구조#0

정은경·2020년 3월 8일
0

시작

  • 프로그래밍은 작은 원리를 적용하는 방법을 익히고,연습을 통해 익숙해져야 함
  • 자료구조와 알고리즘은 프로그래밍 끝판왕!
    • 프로그래밍 자체에 익수하지 않다면,
      • 반드시 간단한 문제를 스스로 코드로 만들 수 있도록 해야함
      • 최소 10줄의 코드는 스스로 작성할 수 있어야 함
    • 프로그래밍은 가능하지만, 파이썬이 익숙하지 않다면,
      • 파이썬 기본 문법에 익숙해져야 함
      • 파이썬 기초 문제풀이 (www.fun-coding.org)

자료구조란?

  • 용어: 자료구조, 데이터 구조, data structure
  • 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미
  • 코드 상에서 효율적으로 데이터를 처리하기 위해, 데이터 특성에 따라, 체계적으로 데이터를 구조화해야 함
    • 어떤 데이터 구조를 사용하느냐에 따라, 코드 효율이 달라짐

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

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

대표적인 자료구조

  • 배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등
  • 현실 세계의 가장 대표적인 데이터 구조? 사전

알고리즘이란?

  • 용어: 알고리즘, algorithm
  • 어떤 문제를 풀기 위한 절차/방법
  • 어떤 문제에 대해, 특정한 '입력'을 넣으면, 원하는 '출력'을 얻을 수 있도록 만드는 프로그래밍
  • 현실 세계의 가장 대표적인 알고리즘? 백종원 레시피

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

  • 어떤 자료구조와 알고맂므을 쓰느냐에 따라, 성능이 천지차!
  • 결국 프로그래밍을 잘 할 수 있는 기술과 역량을 익히고, 검증할 수 있음

자료구조/알고리즘, 그리고 파이썬

  • 어던 언어로든 자료구조/알고리즘 익힐 수 있음
    • 이전에는 무조건 C 또는 C++로만 작성하도록 하는 경우가 많았음
    • 최근에는 언어로 인한 제약/평가는 없어짐
      • 가장 쉽고 빠르게 자료구조/알고리즘을 익힐 수 있는 언어: 파이썬

주피터 노트북 사용법

anaconda 설치
  • anaconda란?
    • 파이썬 기본(컴파일러)
    • 파이썬 주요 라이브러리
    • jupyter notebook 등 유용한 툴
  • 참고
    • 컴파일러: 프로그래밍 언어로 작성된 코드를 컴퓨터가 실행할 수 있는 코드로 변환하는 프로그램
    • 파이썬의 장점: 라이브러리
      pip install libaray-name
  • 만약 anaconda가 설치가 안된다면?
    1. 파이썬 컴파일러 설치: https://www.python.org/downloads/
    2. jupyter notebook 설치:
      pip install --upgrade pip
      pip install jupyter
jupyter notebook이란?
  • Editor(PyCharm) vs. Jupyter Notebook
    • 한줄 한줄 코드 실행 결과 확인이 쉬움
    • 문서와 코드를 함께 작성/저장할 수 있음
  • 복잡한 자료구조/알고리즘을 보다 쉽게 정리하고, 익히기 위해 사용

주피터 노트북 실행하기

터미널에서

jupyter-notebook

단축키

  • shift + enter : 코드실행
  • a : 셀 위에 셀 만들기
  • b : 셀 아래에 셀 만들기

출처: 패캠강의

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글