개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
알고리즘 방식은 여러가지가 있다.
스택은 후입선출, 큐는 선입선출
클린코드는 설명이 필요없는 코드
TIL (Today I Learned) 날짜
2023. 01. 21
오늘 읽은 범위
에피소드 26~29
책에서 기억하고 싶은 내용을 써보세요.
에피소드 26. 정렬 알고리즘이 뭐죠?
- 버블 정렬 O(N²) : 왼쪽, 오른쪽을 비교하여 자리를 바꾸는 방식
- 선택 정렬 O(N²) : 가장 작은 데이터 또는 가장 큰 데이터의 위치를 기억해서 위치를 바꾸는 방식
- 삽입 정렬 O(N²) : 앞쪽의 데이터와 비교해서 밀어넣는 방식
- 시간복잡도는 같아도 초기 데이터 상태에 따라 처리 속도가 달라질 수 있다.
에피소드 27. 스택, 큐가 뭐죠?
- 추상자료구조, 기존 프로그래밍 언어의 문법으로 데이터를 저장할 때 부여하는 규칙
- 스택의 규칙 : 마지막에 들어간 녀석이 처음으로 나온다(last in, first out. LIFO)
예) 웹브라우저의 뒤로가기 버튼, Ctrl+Z
- 큐의 규칙 : 가장 먼저 들어간 녀석이 먼저 나온다(first in, first out. FIFO)
예) 쇼핑몰 주문 처리 시스템
실생활에서 스택과 큐의 규칙을 찾아보자!
에피소드 28. 해시 테이블이 뭐죠?
- 키와 값을 짝지어 모은 것
- 배열형태의 해시 테이블과 해시함수의 세트
- 해시함수
1) 키를 인덱스로 바꿔 주는 역할
2) 해시함수가 글자수를 그대로 인덱스를 반환하도록 구성했다고 했을 때 '피자'는 글자수가 2개이니까 인덱스 2를 따라가면 값 12000을 찾을 수 있다.
그런데 같은 글자수를 가진 '치킨'도 있다면? 해시 충돌(Hash collison)이 발생하는데 이런 경우 같은 인덱스에 또 다른 배열을 넣는 방식 등으로 해결한다.
에피소드 29. 개발자 필수 소양, 클린 코드!
- 코드를 읽기만 해도 이 코드가 무슨 일을 하는지, 어떤 것의 의미하는지 이해할 수 있는 코드이다.
1) 의미 있는 변수, 함수의 이름을 적절히 사용하라
2) 함수 이름은 가급적 동사로 짓고 함수당 1가지 역할만 하는 것이 좋다.
3) 매개변수는 너무 많이 쓰지 마라. (3개 이하로)
4) Boolean값을 인자로 보내지 마라. (참/거짓에 따라 2가지 일을 처리하게 되므로)
5) 축약어를 쓰지 마라.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
스택, 큐의 규칙을 실생활에도 찾을 수 있다는게 재미있었다. 또 어떤게 있을까?
오늘 읽은 클린코드 5줄은 앞으로 매우 유용할 것 같다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
삽입 정렬 알고리즘의 포인트는 교환이 아니라 밀어넣기라고 했는데, 처음에 밀어넣기 할 빈 공간이 필요한걸까? 밀어넣기 할때 나머지 데이터의 위치는 바뀌지 않아도 되는걸까?
오늘 읽은 다른사람의 TIL