개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
시간 복잡도가 같다고 알고리즘 속도가 다 같지 않다
스택 - LIFO(last in, first out), 큐 - FIFO(first in, first out)
나와 동료를 위한 클린코드
TIL (Today I Learned) 날짜
2024. 11. 16 (토)
오늘 읽은 범위
에피소드 26 ~ 29
책에서 기억하고 싶은 내용을 써보세요.
시간 복잡도가 같다고 한 것은 시간 복잡도를 단순히 측정 했을 때 그렇다는 뜻이었어.
그래서 기계적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘은 있을 수 있다는 거야.
왜냐하면 큐나 스택은 기존 프로그래밍 언어의 문법으로 데이터를 저장할 때 어떤 규칙만 부여하기만 하면 되기 때문이야. 이런 개념을 추상 자료구조(abstract data type, ADT)라고 해.
스택의 규칙, 1. 위에서 데이터를 쌓는다. 2. 위에서부터 데이터를 뺀다.
큐의 규칙, 1. 위로 데이터를 쌓는다. 2. 아래서부터 데이터를 뺀다.
쉽게 말해 해시 테이블에서는 어떤 값을 찾더라도 딱 한 단계만 거쳐.
이러한 이유로 해시 테이블에서 검색은 사실 항상 O(1)은 아니야. 지금처럼 충돌을 추가로 처리해야 할 수도 있거든.
의미 있는 변수, 함수의 이름을 적절히 사용하라.
매개변수는 너무 많이 쓰지 마라.
불린값을 인자로 보내지 마라.
일단 잘 실행되는 코드를 막 쓰고 나중에 치워. 그 대신 마지막에는 항상 클린하게 코드를 다듬는 작업을 하면 돼!
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
시간 복잡도가 같다고 알고리즘 속도가 동일하지 않다!
스택과 큐와 같은 것을 추상 자료구조라는 것을 처음 들어봤다.
해시 테이블의 시간 복잡도는 대부분 O(1)이지만 검색할 때 충돌이 일어날 경우에는 O(1)이 아닐 수 있다.
클린 코드의 5가지 꿀팁을 적용해서 나의 코드들을 되돌아 볼 때 2가지가 제일 부족한 것 같다. 첫 번째는 매개변수를 많이 넘길 때가 있었는데 컨피겨레이션 오브젝트 방식을 적용하는 것도 고려하면서 코드를 써야겠다. 두번째는 불린값을 인자로 보내지 말 것이다. 함수가 1가지 일만 잘하도록 하지 못했던 것 같다.
과제2: 내가 번아웃을 극복하는 방법은?