FE

[노개북 - Day 9 ] 23.01.21 본문

TIR/IT 5분 잡학지식

[노개북 - Day 9 ] 23.01.21

zizonemoi 2023. 1. 21. 19:48

✍️ TIL (Today I Learned)

  • 정렬 알고리즘
  • 스택, 큐
  • 해시 테이블
  • 클린 코드

📑 오늘 읽은 범위

에피소드 26 ~ 에피소드 29


🔖 책에서 기억하고 싶은 내용

  • 정렬 알고리즘
    • 데이터를 순서 있게 정리하는 것
    • 대표적인 3가지 정렬 알고리즘 : O(N^2)이지만, 1 → 3으로 갈수록 조금 더 빠름
      1. 버블정렬 : 왼쪽 오른쪽만 비교하며 정렬
      2. 선택정렬 : 하나를 선택해서 정렬
      3. 삽입정렬 : 앞에 있는 데이터를 보면서 배치
    • 시간 복잡도를 단순하게 측정 했을 때 O(N^2)로 같을 뿐
  • 스택, 큐
    • 실제로 존재하는 개념이 아니라 규칙성에 가까움 → 추상 자료구조(abstract data type, ADT)
    • 스택(stack) : LIFO(Last In First Out)
      • 규칙
        1. 위에서 데이터를 쌓음
        2. 위에서부터 데이터를 뺌
      • 어떤걸로 구현해도 상관 없지만 규칙을 지켜야 스택이라 부를 수 있다.
      • ex) 웹 브라우저 뒤로가기 버튼, 되돌리기 단축키
    • 큐(queue) : FIFO(First In First Out)
      • 규칙
        1. 위에서 데이터를 쌓음
        2. 아래에서부터 데이터를 뺀다
      • 어떤걸로 구현해도 상관 없지만 규칙을 지켜야 큐라 부를 수 있다.
      • ex) 쇼핑몰 주문 처리 시스템, 프린터
    • 해시 테이블
      • 키와 값을 짝지어 모은 것
      • 배열로 검색 시 선형검색 O(N)이지만 해시 테이블을 이용하면 O(1)로 효율적
      • 해시 테이블을 배열 형태로 구성, 해시 함수와 세트
       

    • 해시 충돌(hash collision) : 다른 데이터가 해시 함수를 거친 뒤 같은 인덱스를 갖게 된다면?
    • 대처 방법 중 하나 : 같은 인덱스에 배열을 추가 해서 선형검색 → 해시 테이블의 시간복잡도가 항상 O(1)인 건 아니다.

  • 클린 코드
    1. 의미 있는 변수, 함수의 이름 적절히 사용
    2. 함수 이름은 가급적 동사
    3. 매개변수는 너무 많이 사용하지 말 것(최대 약 3개 정도), 너무 많아질 것 같으면 컨피겨레이션 오브젝트 방식으로 매개변수 묶어 전달
    4. 불린값을 인자로 보내지 말 것 (함수는 한가지 기능에 충실한게 좋음)
    5. 축약어를 사용하지 말 것

'TIR > IT 5분 잡학지식' 카테고리의 다른 글

[노개북 - Day 7 ] 23.01.19  (0) 2023.01.19
[노개북 - Day 6 ] 23.01.18  (1) 2023.01.19
[노개북 - Day 5 ] 23.01.17  (0) 2023.01.17
[노개북 - Day 3 ] 23.01.15  (1) 2023.01.15
[노개북 - Day 2 ] 23.01.14  (0) 2023.01.14
Comments