개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
큐나 스택은 문법이 따로 있지는 않고 배열 같은 것에 큐나 스택의 규칙을 부여하면 이를 큐 또는 스택이라 할 수 있는데(무엇으로 구현하는지는 상관 없고 큐 혹은 스택의 규칙을 지키는지가 중요함) 이러한 개념을 추상 자료구조(abstract data type, ADT)라고 한다. 스택은 수직으로 데이터가 쌓이는 구조로(아래에서부터 위로 쌓이는 구조) 값을 추가하거나 삭제할 때 맨 위에서부터 빼야 하며 이러한 방식을 LIFO(Last In, First Out, 마지막에 들어간 녀석이 처음으로 나온다)라고 한다. 큐는 데이터를 쌓을 때 아래에서부터 위로 쌓되 데이터를 추가하거나 삭제할 때는 맨 처음에 들어온 데이터부터 변경하며(줄 서기와 비슷한 원리) 이를 FIFO(First In, First Out, 선입선출)라고 한다. 스택의 예시로는 웹 브라우저의 뒤로 가기 버튼, 되돌리기 단축키(Ctrl+Z)가 있으며 큐의 예시로는 쇼핑몰 주문 처리 시스템(가장 먼저 들어온 주문부터 처리)이 있다.
해시 테이블은 키(key)와 값(data)을 짝을 지어 모은 것으로 데이터를 검색할 때 딱 한 단계만 거치기 때문에 효율이 아주 좋다. 해시 테이블의 구조는 배열이지만 해시 함수를 통해 검색어를 인덱스로 변환해 작업 속도를 높여준다. 단, 검색어가 같은 경우에는 해시 충돌(hash collison)이 일어나는데 이를 대처하기 위해 같은 인덱스에 또 다른 배열을 넣어서 선형 검색으로 검색어를 다시 찾아 충돌을 해결할 수 있다.
클린 코드를 위해서는 의미 있는 변수, 함수의 이름을 적절히 사용하고 함수 이름은 가급적 동사로 지으며 매개변수(parameter)는 너무 많이 쓰지 말 것이며(불가피한 경우에는 컨피겨레이션 오브젝트 방식으로 매개변수를 묶어 전달하는 방법을 고려) 불린값(Boolean)을 인자(argument)로 보내지 말 것이며 축약어 사용을 지양해야 한다.(남이 코드를 봤을 때 이 축약어가 무슨 단어의 축약어인지 파악하기 힘들기 때문)
TIL (Today I Learned) 날짜
2023.09.02
오늘 읽은 범위
26장. 정렬 알고리즘이 뭐죠? ~ 29장. 개발자 필수 소양, 클린 코드!
책에서 기억하고 싶은 내용을 써보세요.
버블 정렬, 선택 정렬, 삽입 정렬의 시간 복잡도는 모두 O(N²)이지만 처리 속도는 삽입 정렬 > 선택 정렬 > 버블 정렬로 서로 다르다.
알고리즘은 시간 복잡도가 같아도 초기 데이터 상태에 따라 처리 속도가 달라진다.
클린 코드란 설명이 필요 없는 코드로 읽기만 해도 이 코드의 역할, 의미를 이해할 수 있는 코드이다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
대학교에서 큐와 스택을 배울 때 배열처럼 문법이 있는 자료구조인 줄 알아서 어떻게 쓰는 건지 감이 안 잡혀서 이해하기가 너무 어려웠는데 그런 게 아니라 추상적인 개념으로 이들의 규칙을 지키면 무엇으로 구현하든 상관없이 큐, 스택으로 불릴 수 있다는 것을 알게 되어 큐와 스택에 대한 궁금증이 명쾌하게 해결됐다.