자료구조/알고리즘 - 1

강좌의 구성Permalink

  1. 자료구조 이론
    (배열, 스택, 큐, 링크드리스트, 해쉬테이블, 트리, 힙 등)
  2. 알고리즘 이론
    (정렬, 그리디, 그래프 등)
  3. 유형별 문제풀이
    (자료구조, 정렬, 탐색, dp, 그리디, 그래프 등)
  4. 실전 코딩테스트 문제풀이
    (탐색, dp, 그리디, 수학 등)
  5. 기술 면접 가이드

수강하게 된 동기Permalink

알고리즘을 잘하기 위해서는 문제를 많이 풀어보며 풀이를 빠르고 정확하게 생각해내는 것이 관건이다.
(생각을 코드로 옮겨내는 구현은 많이 해보면 되서 제외)
알고리즘을 잘하기 위해서 여러 노력들을 했었다.

처음에는 백준 사이트에 올라와있는 문제들을 풀었다.
백준문제를 현재까지 133문제밖에 안풀었다.
하루에 한문제만 풀어도 1년에 최소 300문제는 풀텐데.. 이건 의지박약이다.

두번째는 책으로 읽고 공부하려고 했다.
종만북(알고리즘 문제 해결 전략)을 읽어봤는데,
베이스가 너무 없는지 너무 오래걸려 “나한테 맞는 방법인가?”라는 생각을 하게되어 다른 방법을 찾기 시작했다.

세번째로 인터넷 강의를 접하게 되었다.
인터넷 강의는 솔직히 고민을 많이했다.
경험상 인터넷강의를 끝까지 잘 안듣기에 “사도 이걸 끝까지 들을까?”라는 생각이 컸다. 그리고 솔직히 패캠에 대한 평이 좋지 않아서 수강하기 꺼려졌다. 그래서 첫 인강으로 다른 사이트의 알고리즘 기초 강의를 들어봤는데 너무 기초에 맞춰져있어서 실망이 커서 다른 인강을 찾게 되었다.

마침 패캠에서 완주반이라는 환급시스템이 있어서 인강을 끝까지 듣기 위한 동기부여와,
만약 인강에 만족하지 못하더라도 미션을 통해 환급을 받을 수 있는 시스템이 마음에 들어서 알고리즘/기술면접 강의를 듣게 되었다. -> 포스트는 작성해놓고 제출을 늦게 해서 실패했다.(아 ㅋㅋ ㄲㅂ)

무엇보다도 “안경잡이개발자”로 유튜브에서도 활동하고 계신 “나동빈”님이 참여하시기에 강좌에 대한 신뢰도가 높아져 수강하기로 하는 결정적인 계기가 되었다.

학습기록Permalink

오늘 들은 강의 목록Permalink

  1. 강의 소개 및 학습방법
  2. 자료구조와 알고리즘이란
    (3번 강의는 파이썬, 주피터 노트북 설치 MAC이라서 건너뛰었다.)
  3. 파이썬, 주피터 노트북 설치(Window)
  4. 주피터 노트북 사용법

준비사항Permalink

  • 간단한 코딩가능한 수준
  • 1.2배속(1.7배속으로 들을게요.. 너무 느려요ㅠㅠ)

자료구조란?Permalink

자료구조 : datastructure
대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미
현실에서의 정보를 데이터로 변환해서 저장할때 사용하는 구조를 위한 자료구조

대표적인 자료구조 : 배열, 스택, 큐, 링크드리스트, 해쉬 테이블, 힙 등
현실세계의 가장 대표적인 데이터 구조 : 딕셔너리

알고리즘이란?Permalink

알고리즘 : algorithm
문제를 풀기 위한 절차/방법 -> 문제해결방법
알고리즘 문제 해결 : 어떤 문제에 대해 특정한 입력을 넣으면 그에 대응하는 출력을 얻을 수 있도록 만드는 것

자료구조와 알고리즘을 공부하는 이유?Permalink

어떤 자료구조와 알고리즘에 따라 같은 프로그램도 성능이 천지차이기 때문이다.
이를 통해서 어떤 사람의 문제해결력에 대한 수준을 가늠할 수 있다.

주피터Permalink

왜 주피터를 사용하는가? 주피터가 한줄한줄 코드실행하고 확인하기가 쉽다고함. 구글 > anaconda > individual edition 설치 (아나콘다 설치) pip install –upgrade pip (pip업그레이드) pip install jupyter (주피터 설치) 윈도우 하단 검색창에서 “jupyter notebook (anaconda3)” 검색후 실행하면 켜짐 Jupyter 폴더를 생성하고, 한번 체험해봤다.

주피터 체험Permalink

# 1번 셀
number = 1
# 2번 셀
print(number)

위 두 셀을 실행했을때의 결과가 1이 나왔다.
이를 통해 코드가 합쳐져서 아래와 같은 코드가 생성되고 저런 결과가 나왔다고 생각했다.

# 합쳐져서 이렇게 되려나?
number=1
print(number)

(강의에 없는 뻘짓) 함수는 들여쓰기를 통해 함수의 몸체부분을 판별하는데 이때 중간을 잘라서 두 셀로 나눠 실행해보면 어떨까? 라는 생각을 했고 간단하게 for문으로 실행해봤다. 결과는 아래와 같다. 실행후
예상결과
예상과는 다르게 들여쓰기를 해도 다른 부분으로 판단되어 따로 실행되었다.
이를 통해 변수, 함수는 공유되지만 각 셀의 코드가 이어붙여져서 실행되는 것은 아니다라고 결론지었다.

주피터의 셀이란?Permalink

강사님께서 드래그하면서 알려주신 셀
파란색이 셀이라고 합니다
(놀라운 사실) 그러면 위에 두 사진에서는 셀이 총 3개있구나!
주피터셀

주피터의 단축키Permalink

강사님이 알려주신 단축키 : a, b, shift+enter

shift + enter : 코드 실행
커맨드모드 (esc)
a : 현재 셀 위에 셀 추가
b : 현재 셀 밑에 셀 추가
에딧모드 (enter)

단축키가 궁금하다면 Help>keyboard shortcuts 여기로 가보면 많다

다음시간에 들을 강의Permalink

  1. 배열(Array)
  2. 파이썬과 배열
    …etc1

댓글남기기