Community

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

← Go back

[IT 5분 잡학사전] TIL 230902(Day9)

#book_club
1년 전
234

오늘 TIL 3줄 요약

  • 정렬 알고리즘 3개(버블, 선택, 삽입)는 시간 복잡도는 같으나, 성능이 다르다. 삽입 정렬이 그 중 가장 빠르나 데이터 초기 상태에 따라 달라질 수 있음

  • 함수는 1가지 일만 잘하면 된다. 함수 이름은 동사로!

  • 설명이 필요 없는 코드를 작성하자!

TIL (Today I Learned) 날짜

  • 2023-09-02

오늘 읽은 범위

  • EP26 정렬 알고리즘이 뭐죠?

  • EP27 스택, 큐가 뭐죠?

  • EP28 해시 테이블이 뭐죠?

  • EP29 개발자 필수 소양, 클린 코드!

책에서 기억하고 싶은 내용을 써보세요.

  • 정렬 알고리즘 : 모두 시간복잡도는 O(N^2)이나 성능이 다름

    1. 버블 정렬(Bubble sort)

      • 2칸짜리 창문을 놓고 오른쪽으로 1칸씩 밀면서 왼쪽과 오른쪽을 비교해서 정렬

      • 한 사이클이 종료되면 제일 마지막 위치가 정렬됨, 두 번째 사이클은 마지막 위치 제외해서 진행

      • 한 사이클에 위치 교환 연산 여러번 일어날 수 있음

      • 좋은 알고리즘이라 할 수 없음. 실제 많이 사용하지 않음

    2. 선택 정렬(Selection Sort)

      • 전체 데이터 중에 가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억해서 위치 교환

      • 한 사이클에 위치 교환 연산 1번 일어남

      • 버블 정렬보다 효율적임

    3. 삽입 정렬(Insert Sort)

      • 앞에 있는 데이터를 보면서 비교해 데이터를 밀어 넣음(교환X)

      • 버블 정렬, 선택 정렬보다 빠름

    • 알고리즘은 초기 데이터 상태에 따라 처리 속도가 달라짐 → 기계적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘이 있을 수 있음

  • 추상 자료구조(Abstract Data Type, ADT) : 구현하고자 하는 구조에 대해 구현 방법은 명시하지 않고 자료구조의 특성들과 어떤 Operations들이 있는지를 설명하는 자료구조의 한가지 형태

    • 스택(Stack) : LIFO(Last In First Out) 구조

    • 브라우저의 뒤로가기 버튼, 되돌리기 기능

    • 큐(Queue) : FIFO(First In First Out) 구조

    • 쇼핑몰 주문 처리

  • 해시 테이블(Hash Table) : 키와 값을 짝지어 모은 형태

    • 시간복잡도 : O(1) → 가장 빠름

    • 해시 함수 : 검색할 때 쓰는 키를 인덱스로 바꿔주는 역할

    • 해시 충돌(Hash Collision) : 다른 값의 데이터를 입력했더라도 해시 결과 값이 같은 경우

  • 클린 코드(Clean Code)

    • 설명이 필요 없는 코드!

    1. 의미 있는 변수, 함수의 이름 사용하기

    2. 함수의 이름은 동사로 짖기

    3. 매개변수는 많이 쓰지 않기 → 많을 경우 Configuration Object 방식으로 매개변수를 묶어 전달

    4. Boolean 값을 인자로 보내지 말 것 → 함수는 한가지 일을 하는 것에 위배됨

    5. 축약어를 쓰지 말 것

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • <클린 코드>를 읽어보자!

인증(니꼬쌤과 인증샷!찾기)