개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
자료구조와 알고리즘은 개발의 효율과 성능을 위한 것. 효율성에 대한 고민은 언제나 끝이없다.
배열은 컴퓨터안에 있는 메모리라는 창고에 데이터라는 상자를 쌓아두는 방식이다.
알고리즘의 속도는 시간복잡도 개념으로 측정하며 표기법은 빅오표기법!
이진 알고리즘은 정렬된 데이터를 절반씩 쪼개가며 찾는 방법!
TIL (Today I Learned) 날짜
2023.01.19
오늘 읽은 범위
에피소드 22 : 자료구조와 알고리즘은 필수라고?
에피소드 23 : 배열이 뭐죠?
에피소드 24 : 알고리즘의 속도는 어떻게 표현할까?
에피소드 25 : 검색 알고리즘이 뭐죠?
책에서 기억하고 싶은 내용을 써보세요.
자료구조와 알고리즘은 처음 개발할 때는 굳이 공부할 필요는 없다. 그러나 나중에 코드의 관리와 효율성을 위해서는 꼭 적용하고 고민해야하는 부분이다.
메모리는 휘발성 메모리와 비휘발성 메모리로 나뉜다. 휘발성 메모리 중 대표적인 것이 램(RAM)이다.
램은 창고같은 역할을 하는데 그 창고에 데이터를 적재하는 방식을 배열이라고 생각하면 된다.
배열에 있는 데이터를 읽고(read), 검색(search)하고, 추가(add)하고, 삭제(delete)하는 작업은 각각 방법과 속도가 다름.
배열을 읽는 속도는 빠르지만 검색, 추가, 삭제는 데이터(상자)가 쌓여있기 때문에 느림.
알고리즘의 속도 시간복잡도라는 개념으로 표현하는데 ,빅오(Big-O)표기법으로 나타낸다.
O(1) - 상수시간(constant time) : 그 알고리즘의 실행단계는 1번이다. 즉 배열길이와 상관없이 늘 같다.
O(N) - 일차함수?
O(n²) - 이차시간(quadratic time) : 중첩반복문이 있을때
y축을 시간, x축을 배열 길이로 둔 함수로 생각하면 된다.
선형검색(Linear search) - 앞에서부터 하나하나 찾는것이다. 배열의 수만큼 시간이 걸린다. O(N)
이진검색(binary search) - 정렬이 되어있는 배열에서만 사용 가능하다. 시간복잡도가 작으므로 배열의 크기가 클 때 효율을 발휘한다. O(logN)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
알고리즘이나 자료구조 모두 효율성을 만들기 위한 목적이다. 다른 분야에서도 마찬가지로 효율적으로 일하고 관리하기 위한 고민을 하는데 똑같이 코딩하고 개발을 할때에도 사용하는 기술이나 도구는 다르지만 고민거리는 여전히 같다는 생각이 든다.
C언어를 찍먹할 때 포인터라는 개념이 잘 잡히지 않아 고생했었는데, 이게 메모리 읽는거를 말하는 것인지 다시 한번 생각하게 되었다. 책을 읽으니 이렇게 뒤죽박죽이던 개념들이 하나하나 정리가 되어가는 것 같아서 감사하다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
알고리즘 공부는 어떻게 하는것이 좋을까?? 수학의 정석 보는것처럼 문제 많이 풀면 되는건가...
오늘 읽은 다른사람의 TIL