Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back

[TIL] IT 5분 잡학사전 에피소드 26~29

#book_club
9개월 전
175

오늘 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: 내가 번아웃을 극복하는 방법은?