개발자 99% 커뮤니티에서 수다 떨어요!
[노마드코더] 개발자 북클럽 - IT 5분 잡.. : 네이버블로그 (naver.com)
오늘 TIL 3줄 요약
효율적인 코드를 작성하기 위해서는 CS 지식이 필수적!
배열을 읽고/검색하고/삽입하고/삭제하는 알고리즘
시간 복잡도를 표현하는 Big-O표현법은 꼭 이해해두기
TIL (Today I Learned) 날짜
2023.01.19
오늘 읽은 범위
에피소드22 - 에피소드25
책에서 기억하고 싶은 내용을 써보세요.
EP22. 자료구조와 알고리즘은 필수라고?
자료구조나 알고리즘을 몰라도 앱이나 웹 페이지 만드는 데에는 문제가 없으나,
개발자가 되고 싶다면 결국에는 자료구조와 알고리즘을 공부하고/자신의 코드에 적용할 줄 알아야 함.
(효율적인 코드, 속도가 빠른 코드를 고안하기 위해)
알고리즘 : 컴퓨터에게 내리는 지시 사항을 나열한 것 (EX 구글 맵 - 패스파인더 알고리즘 등)
자료구조 : 데이터를 보관하는 다양한 방식[구조] (EX 데이터 크기 기준, 인덱스 기준, 생성 시간 기준 등)
EP23. 배열이 뭐죠?
배열(array) : 프로그래밍 공부를 시작하면 가장 먼저 만나는 자료구조
* 시간복잡도 : 프로그램의 작업 속도가 얼마나 빠른지 측정하는 방법 (작업이 얼마나 많은 단계를 거치는지 측정함)
* 메모리 : 컴퓨터의 기억 공간 <휘발성/비휘발성>
배열을 읽는(read) 방법과 속도 : 위치를 지시해서 데이터를 읽을 수 있음 (배열은 0부터 숫자를 매김) ⇒ 매우 빠름
배열을 검색하는(search) 원리와 속도 : 선형 검색 등 ⇒ 빠르지 않음
배열에 데이터를 삽입하는(add) 원리와 속도 : ⇒ 시나리오마다 다름(빠르지 않음)
- 시나리오1 : 맨 마지막에 추가하기 (시작점을 찾고 길이만큼 뒤로 가서, 끝에 새로운 데이터를 추가)
- 시나리오2 : 배열 중간에 추가하기 (뒤에 있는 데이터를 먼저 N칸 뒤로 옮기고, 새로운 데이터를 추가)
- 시나리오3 : 배열에 데이터가 꽉 차있는 경우 (더 큰 배열을 새로 만들고, 이전 배열을 복사해서 옮긴 다음 새로운 데이터를 추가)
배열에서 데이터를 삭제하는(delete) 원리와 속도 : 삽입하는 원리와 비슷함 ⇒ 시나리오마다 다름(빠르지 않음)
EP24. 알고리즘의 속도는 어떻게 표현할까?
시간복잡도 : 알고리즘으로 작업을 완료할 때까지 걸리는 절차 수 N을 이용해 O(N), O(logN)이라고 표현
[Big-O표현법]
EX 선형 검색 알고리즘 : 배열의 길이를 N이라고 하면, 최대 검색 횟수는 N → 시간 복잡도는 O(N)
Big-O는 실행 단계에 영향을 주는 요소만 보기 때문에, 배열 길이와는 상관이 없음
[이차 시간]
중첩 반복문이 있을 때 발생함 ⇔O(N^2)
EP25. 검색 알고리즘이 뭐죠?
[선형 검색 알고리즘] 맨 처음 배열부터 검색하면서 데이터가 조건에 맞는지 확인하기 (배열 길이 ∝ 검색 시간)
[이진 검색 알고리즘] 중앙에서 검색을 시작하여 조건의 데이터와 대소를 비교 =UP&DOWN (log배열길이 = 검색 시간)
** 이진 검색 알고리즘은 배열의 크기가 클 때 유용하나, 데이터의 정렬(순서대로)이 끝난 배열에서만 사용 가능함
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
CS 지식이 중요하다는 말을 많이 들었던지라 약간의 부담을 가지고 해당 파트를 읽기 시작했는데,
생각보다 훨씬 이해하기 쉽게 풀어져 있어서 좋았다
개인적으로는 앞 에피소드들보다 쉽고 재밌었던 느낌?! 전공으로 배우기 시작하면 또 다르겠지만..
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
중첩 반복문? 이래서 자료구조 알고리즘의 선수과목이 C나 Java구나ㅠㅠ
오늘 읽은 다른 사람의 TIL
[IT 5분 잡학 사전] 23.01.19 TIL – 노마드 코더 Nomad Coders
: "물건을 잘 정리하는 것은 컴퓨터 세계에서도 중요한 과제"