자료구조 알고리즘 : 코딩테스트

[알고리즘] 패캠 알고리즘- #1. 자료구조 이론 (2)자료구조와 알고리즘이란

닉네임이 멋이 중헌디 2021. 5. 26. 08:57

cf, (1)은 강의 소개 

 

1. 자료구조란? 

- a.k.a 자료구조, 데이터 구조, data structure

- 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미

//현실 세계의 정보를 프로그래밍에서 사용하기 위해 데이터를 컴퓨터에 저장하는 구조

- 코드상에서 효율적으로 데이터를 처리하기 위해, 데이터의 특성에 따라, 체계적으로 데이터를 구조화해야 함 

- 어떤 데이터 구조를 사용하느냐에 따라, 코드 효율이 달라짐

 

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

 

- 우편번호 : 5자리 우편 번호로 국가의 기초구역 제공

 = 앞 3자리는 시,군,자치구 + 뒤 2자리는 일련번호 

// 이렇게 한 국민의 주소를 일정 데이터 구조를 이용해서 쉽게 관리할 수 있다

 

- 학생관리 : 학년, 반, 번호를 학생에게 부여해서 학생보를 관리 

 = 학년, 반, 번 학생 

// 이런 방법을 통해 특정 학생을 쉽게 찾을 수 있다

 

대표적인 자료구조

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

// 이렇게 많이 사용되는 자료구조를 익혀서 내가 필요한 자료구조를 만들 수 있다 

// 기술면접 등에서 아주 많이 물어본다 

cf. 현실 세계의 가장 대표적인 자료구조 : 사전

 

2. 알고리즘이란? 

- 용어: 알고리즘

- 어떤 문제를 풀기 위한 절차/방법

- 어떤 문제에 대해 특정한 입력을 넣으면 원하는 출력을 얻을 수 있도록 만드는 프로그래밍

cf. 현실 세계의 가장 대표적인 알고리즘 : 백종원 레시피 

// 문제를 풀 때 방법은 각양각색인데 어떤 알고리즘이 더 좋은지 판단하는 기준: 시간, 저장공간

=> 그러므로 어느 정도 시간, 저장공간을 차지하는지 계산할 수 있어야 한다 

 

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

: 어떤 자료구조, 알고리즘을 쓰느냐에 따라 성능이 천지차

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

 

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

- 어떤 언어로든 자료구조/알고리즘 익힐 수 있음 

- 예전에는 무조건 C, C++ 

- 최근에는 언어로 인한 제약/평가는 없어짐 

그러므로 가장 쉽고 빠르게 자료구조/ 알고리즘을 익힐 수 있는 언어: 파이썬 

현업에서도 많이 사용됨. 

 

1)anaconda 설치 

: 파이썬 기본 컴파일러, 주요 라이브러리, jupyter notebook 설치 가능

2)anaconda 설치 안되면

: 파이썬 컴파일러 설치한 뒤 cmd에 pip install --upgrade pip, pip install jupyter로 주피터 노트북 설치 

 

5.주피터 노트북이란? 

- 파이참은 전체를 모두 작성한 다음에 실행을 해야 하는 반면

주피터 노트북은 한줄한줄 코드 실행 결과 확인이 쉽다 

- 문서와 코드를 함께 작성/저장할 수 있다 

=> 즉 복잡한 자료구조/알고리즘을 보다 쉽게 정리하고 익히기 위해 사용

 

윈도우의 아나콘다의 항목 중 주피터 노트북을 실행할 수 있다

 

6. 주피터 사용하는 방법

- 내 폴더들과 연결해서 화면에 보여준다

- new : 새로운 파일 만들 수 있음

- 파일에 들어가서 제목을 클릭하면 제목 바꿀 수 있음 

- 셀에 코드를 칠 수 있다 

- 위의 재생 버튼 또는 shift + enter을 눌러 코드를 실행할 수 있다

- 실행이 끝나면 In [숫자]가 나오는데 만약 In [*]이 나오면 아직 코드가 실행이 끝나지 않았다는 뜻 

그때는 중단 버튼을 누르면 다음 셀에 입력을 할 수 있다. 

- 한번 파일 안에 실행된 코드는 다른 셀에서도 사용할 수 있다 

- 셀의 순서 바꾸기 : 해당 셀 위에 만들고 싶으면 a, 아래 만들고 싶으면 b / insert above, below도 가능 

- code항목을 markdown으로 바꾸면 코드가 아니라 문서로 사용할 수 있다(but 이는 마크다운 문법을 알아야 한다 ex. 앞에 #을 넣으면 글자 크기 조절이 가능하다)