개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
정렬 알고리즘 3개(버블, 선택, 삽입)는 시간 복잡도는 같으나, 성능이 다르다. 삽입 정렬이 그 중 가장 빠르나 데이터 초기 상태에 따라 달라질 수 있음
함수는 1가지 일만 잘하면 된다. 함수 이름은 동사로!
설명이 필요 없는 코드를 작성하자!
TIL (Today I Learned) 날짜
2023-09-02
오늘 읽은 범위
EP26 정렬 알고리즘이 뭐죠?
EP27 스택, 큐가 뭐죠?
EP28 해시 테이블이 뭐죠?
EP29 개발자 필수 소양, 클린 코드!
책에서 기억하고 싶은 내용을 써보세요.
정렬 알고리즘 : 모두 시간복잡도는 O(N^2)이나 성능이 다름
버블 정렬(Bubble sort)
2칸짜리 창문을 놓고 오른쪽으로 1칸씩 밀면서 왼쪽과 오른쪽을 비교해서 정렬
한 사이클이 종료되면 제일 마지막 위치가 정렬됨, 두 번째 사이클은 마지막 위치 제외해서 진행
한 사이클에 위치 교환 연산 여러번 일어날 수 있음
좋은 알고리즘이라 할 수 없음. 실제 많이 사용하지 않음
선택 정렬(Selection Sort)
전체 데이터 중에 가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억해서 위치 교환
한 사이클에 위치 교환 연산 1번 일어남
버블 정렬보다 효율적임
삽입 정렬(Insert Sort)
앞에 있는 데이터를 보면서 비교해 데이터를 밀어 넣음(교환X)
버블 정렬, 선택 정렬보다 빠름
알고리즘은 초기 데이터 상태에 따라 처리 속도가 달라짐 → 기계적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘이 있을 수 있음
추상 자료구조(Abstract Data Type, ADT) : 구현하고자 하는 구조에 대해 구현 방법은 명시하지 않고 자료구조의 특성들과 어떤 Operations들이 있는지를 설명하는 자료구조의 한가지 형태
스택(Stack) : LIFO(Last In First Out) 구조
브라우저의 뒤로가기 버튼, 되돌리기 기능
큐(Queue) : FIFO(First In First Out) 구조
쇼핑몰 주문 처리
해시 테이블(Hash Table) : 키와 값을 짝지어 모은 형태
시간복잡도 : O(1) → 가장 빠름
해시 함수 : 검색할 때 쓰는 키를 인덱스로 바꿔주는 역할
해시 충돌(Hash Collision) : 다른 값의 데이터를 입력했더라도 해시 결과 값이 같은 경우
클린 코드(Clean Code)
설명이 필요 없는 코드!
의미 있는 변수, 함수의 이름 사용하기
함수의 이름은 동사로 짖기
매개변수는 많이 쓰지 않기 → 많을 경우 Configuration Object 방식으로 매개변수를 묶어 전달
Boolean 값을 인자로 보내지 말 것 → 함수는 한가지 일을 하는 것에 위배됨
축약어를 쓰지 말 것
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
<클린 코드>를 읽어보자!
인증(니꼬쌤과 인증샷!찾기)