Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back

[노마드코더] 개발자 북클럽 - IT 5분 잡학사전 DAY7

#book_club
2년 전
406

[노마드코더] 개발자 북클럽 - 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

: "물건을 잘 정리하는 것은 컴퓨터 세계에서도 중요한 과제"

#코딩 #개발자 #노마드북클럽 #노개북