파트1. 어서와! 자료구조와 알고리즘을 왜 배워야 하는지 알려줄게
파이썬의 datatype
- 문자열(str)
- 리스트(list)
- 사전(dict)
- 순서쌍(tuple), 집합(set),...
알고리즘이란?
- 사전적 정의: 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합
- 프로그래밍: 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택
파트2. 선형 배열(Linear Array)
- 배열: 원소들을 순서대로 늘어놓은 것
- index가 존재 (0,1,2...)
리스트(배열) 연산
(1) 원소 덧붙이기 .append()
(2) 끝에서 꺼내기 .pop()
순식간에 (빠르게) 할 수 있는 일
→ 리스트의 길이와 무관(상수 시간) -> O(1)
(3) 원소 삽입하기
L=[20,37,58,72,91]
L.insert(3,65) #3번째 인덱스에 65 삽입
(4) 원소 삭제하기
del(L[2])
→ 리스트의 길이가 길면 오래 걸리는 일
→ 리스트의 길이에 비례 (선형 시간) -> O(n)
삽입 인덱스 이후의 값들을 한칸씩 다 미루고 제거 인덱스 이후의 값들을 한칸씩 앞으로 당기는데 시간이 걸린다.
(5) 원소 탐색하기
L.index("Spam")
* 프로그래머스의 '어서와! 자료구조와 알고리즘은 처음이지?' 강의를 듣고 정리하였습니다.
'알고리즘 강의' 카테고리의 다른 글
[알고리즘 강의] 파트7. 연결 리스트(Linked Lists) (1) (0) | 2021.07.14 |
---|---|
[알고리즘 강의] 파트6. 알고리즘의 복잡도(Complexity of Algorithms) (0) | 2021.07.13 |
[알고리즘 강의] 파트5. 재귀 알고리즘(Recursive Algorithms) 응용 (0) | 2021.07.13 |
[알고리즘 강의] 파트4. 재귀 알고리즘(Recursive Algorithms) 기초 (0) | 2021.07.13 |
[알고리즘 강의] 파트3. 배열 더 알아보기: 정렬과 탐색(Sorting & Searching) (0) | 2021.07.13 |