노마드코더 챌린지/노개북 - IT 5분 잡학사전

[북클럽][TIL] <IT 5분 잡학사전> - Day 9. 컴퓨터 공학 지식 (2)

엘레나림 2024. 4. 21. 01:44
728x90

오늘 읽은 범위

  • 마당 3. 컴퓨터 공학편 ep26 ~ 29

 

책에서 기억하고 싶은 내용

  • ep26 : 정렬 sorting 알고리즘
    • 버블 정렬 (bubble sort) : 서로 인접한 두 요소를 차례로 비교하며 정렬 
      • 앞에서부터 끝까지 이동하며 2개 요소만 비교하여 재배치시켜 한 사이클이 진행되면 마지막 자리 요소는 확정. 마지막을 제외하고 앞에서부터 동일하게 사이클 진행하면 마지막에서 두번째 자리 요소도 확정. 반복하여 맨 앞 자리까지 진행되면 정렬 완료.
      • 한 사이클 당 비교 횟수 N-1 번, 교환 횟수 N-1 번 -> N-1 번의 사이클
      • 시간 복잡도 = O(N^2) 
    • 선택 정렬 (selection sort) : 가장 작거나 큰 요소의 위치를 기억하여 차례로 배치
      • 앞에서부터 가장 작은 요소를 비교하며 찾아서 위치를 따로 저장한 뒤, 맨 앞 요소와 교환. 두번째 요소부터 동일하게 사이클 진행하며 반복하면 정렬 완료
      • 한 사이클 당 비교 횟수 N-1 번, 교환 횟수 1번 -> N-1 번의 사이클
      • 시간 복잡도 = O(N^2)
    • 삽입 정렬 (insertion sort) : 앞에 모든 요소와 비교해가며 배치
      • 맨 앞은 비교할 요소가 없으니 두번째 요소부터 맨 앞 요소와 비교하고 더 작으면 앞 쪽으로 밀어 넣음. 그 다음 요소부터 바로 앞 요소와 비교해서 더 작으면 앞 쪽으로 밀어넣고 크면 그대로 유지. 앞앞 요소와도 비교해서 더 작으면 앞 쪽으로 밀어넣고 크면 그대로 유지. 이후부터 동일하게 사이클 진행하며 반복하면 정렬 완료
      • 비교와 함께 바로 배치하며 정렬하기 때문에 최악과 최선의 상황이 존재. 성능이 제일 좋음
        최선은 비교 횟수만 N-1 번. 최악은 비교 횟수 N-1 번, 교환 횟수 2번 -> N-1 번의 사이클
      • 시간 복잡도 = O(N^2)

 

  • ep27 : 스택, 큐
    • 실제 구현되는 자료구조가 아닌 규칙 개념의 자료구조. 추상 자료구조 (abstract data type, ADT)
    • 스택 = 쌓기!
      • 위에서 데이터를 쌓고 위에서부터 데이터를 뺀다. LIFO = last in, first out
      • 웹 브라우저의 뒤로 가기 버튼
      • 되돌리기 단축키
    • 큐 = 줄서기!
      • 위로 데이터를 쌓는다. 아래에서부터 데이터를 뺀다. FIFO = first in, first out (선입선출)
      • 쇼핑몰 주문 처리 시스템

 

  • ep28 : 해시 테이블
    • 키와 값을 짝지어 모아서 데이터를 쉽게 정리할 수 있게 함
    • 시간 복잡도 = O(1) <- 키가 있는지 1번만 조회하면 되니까 상수시간
    • 검색 시 키가 없으면 undefined 를 반환
    •  

 

  • ep29 : 클린 코드
    • 개발자라면 무조건 읽어야 하는 책!
    • 클린 코드 = 설명이 필요 없는 코드여야 함
      • 의미 있는 변수, 함수의 이름 사용. 상수값이라도 변수로 할당해라
      • 함수 이름은 동사로. 함수는 1가지 역할만 하는 것이 좋다.
      • 매개변수는 최소한으로. 3개 이하를 추천. 만약 많아진다면 컨피겨레이션 오브젝트 방식으로 묶어서 전달
      • 불린값은 인자로 보내지 마라. 함수 안에서 참/거짓에 따라 각각 2가지의 일 처리하도록 만들지 않는다
      • 혼자만 알만한 축약어 쓰지마라

 

오늘 읽은 소감은? 떠오르는 생각들

  • 버블/선택/삽입 정렬 개념을 다시 정리할 수 있어서 좋았다. 다른 정렬 개념들도 따로 정리해봐야겠다!
  • 다음 노개북으로 클린 코드 도전이다!!!!

 

3줄 요약

- 버블/선택/삽입 정렬 알고리즘과 스택, 큐 개념 정리

- 배열보다는 해시 테이블로 검색을 효과적이게 구현

- 개발자라면 무조건 읽어야 하는 책, 클린코드! 

 

오늘의 2번째 과제 : 내가 번아웃을 극복하는 방법은?

노마드코더 슬랙 채널 #book-club-it-dictionary 에 작성한 메세지 by Ellena.Lim