개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
정렬 알고리즘은 동일한 시간 복잡도를 가지더라도 실제 속도는 차이가 있다.
해시 테이블은 배열과 해시 함수를 세트로 가지고 있는 자료 구조이다.
클린 코드는 설명이 필요 없는 코드이다.
TIL (Today I Learned) 날짜
2025. 01. 11
오늘 읽은 범위
에피소드 26 - 정렬 알고리즘이 뭐죠?
에피소드 27 - 스택, 큐가 뭐죠?
에피소드 28 - 해시 테이블이 뭐죠?
에피소드 29 - 개발자 필수 소양, 클린 코드!
IT 쿠키 상식 - 개발자의 책상 위 필수 아이템
책에서 기억하고 싶은 내용을 써보세요.
에피소드 26
버블 정렬은 이웃한 두 값을 비교하여 큰 값을 오른쪽으로 보내는 방식의 정렬이다. 가장 간단하게 생각할 수 있지만 별로 좋은 알고리즘은 아니다.
선택 정렬은 가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하는 방식의 정렬이다. 시간 복잡도는 버블 정렬과 동일하지만 자리를 바꾸는 연산을 한 번만 하여 더 효율적이다.
삽입 정렬은 앞의 데이터를 보고 교환이 아닌 밀어 넣는 방식의 정렬이다. 시간 복잡도는 선택 정렬과 동일하지만 더 빠르다.
시간 복잡도가 같더라도 평균적으로 빠른 알고리즘이 존재할 수 있다.
에피소드 27
큐와 스택은 배열과 달리 문법적으로 구현된 것은 아니다. 이런 형태의 자료구조를 추상 자료구조라 한다.
스택은 위에서부터 데이터를 쌓고 위에서부터 데이터를 빼는 LIFO(Last In, First Out) 방식의 구조이다. 웹 페이지의 뒤로 가기, 되돌리기 등이 스택이다.
큐는 위에서부터 데이터를 쌓고 아래에서부터 데이터를 빼는 FIFO(First In, First Out) 방식의 구조이다. 쇼핑몰의 주문 처리 시스템은 큐이다.
에피소드 28
해시 테이블은 키와 값이 짝지어진 형태의 데이터 구조이다.
해시 테이블은 데이터 검색, 추가, 삭제 모두 O(1)
의 시간 복잡도를 가진다.
값을 boolean으로 넣는 방식으로 해시 테이블을 배열처럼 사용할 수 있다.
해시 테이블은 기본적으로 배열 구조로 되어 있지만, 해시 함수를 통해 키를 인덱스로 바꿔 주는 방식으로 동작한다.
해시 값이 같은 경우 해시 충돌이 발생할 수 있다. 해시 충돌 대처 방법 중 하나는 인덱스 내에 또 다른 배열을 넣는 방법이 있다.
에피소드 29
클린 코드란 이 코드가 무슨 일을 하는지, 어떤 것을 의미하는지 물어볼 필요 없이 잘 이해할 수 있는 코드를 뜻한다.
변수의 이름은 의미를 담아서 나타내고, 함수의 이름은 동사로 짓는다.
함수에 필요한 인자가 많다면 object 형태로 보내고, boolean은 함수의 인자로 사용하지 말자.
일반적이지 않은 축약어는 사용하지 말자.
코드를 다듬는 작업은 잘 실행되는 코드를 만든 후에 하면 된다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
정렬에서 시간 복잡도가 같더라도 평균적으로 빠른 알고리즘이 존재할 수 있다는 부분이 신기하게 느껴졌다.
해시 테이블의 자료 구조와 배열이 어떤 차이가 있어서 사용할 때 시간 복잡도의 차이가 생기는지 궁금했었는데, 이것을 잘 이해할 수 있었다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
정렬 알고리즘 중에 시간 복잡도가 O(N²)
보다 작은 알고리즘도 있을까?
오늘 읽은 다른사람의 TIL
아코님의 TIL (https://my-log-here.tistory.com/8)
내가 번아웃을 극복하는 방법은?
슬랙 메세지 링크 - https://nomadcoders.slack.com/archives/C04GZRR7D9P/p1736599312065299