Community

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

← Go back

TIL - Day 9

#book_club
2년 전
392

Day 9

오늘 읽은 범위 : 에피소드 26. 정렬 알고리즘이 뭐죠? ~ 29. 개발자 필수 소양, 클린 코드!

💡 오늘 TIL 3줄 요약

  • 버블, 선택, 삽입 정렬은 시간 복잡도가 같지만 속도 차이가 있다구~!

  • 스택은 LIFO , 큐는 FIFO

  • 해시테이블은 키 - 값의 쌍 이라구~

💡 책에서 기억하고 싶은 내용 작성

[ 정렬 알고리즘 ]

  • 버블 정렬

    간단하면서도 비효율적인 정렬 알고리즘

    오른쪽으로 1칸 씩 밀면서 왼쪽과 오른쪽을 비교하는 방식으로 정렬함

    시간 복잡도 : O(N2) → 비효율적 + 사용 잘 안함

  • 선택 정렬

    가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하는 방식

    시간 복잡도 : O(N2) → 버블 정렬보다 효율적 ( 자리 바꾸는 연산은 사이클 당 1번씩)

  • 삽입 정렬

    교환이 아닌 밀어 넣음

    인덱스 1번위치에서 부터 시작

    시간 복잡도 : O(N2) → 선택, 버블 정렬 보다 빠름

>> 시간 복잡도가 같은데 속도 차이가 나는 이유 <<

시간 복잡도를 단순히 측정 했을때의 경우 같은 결과 나옴

따라서, 시간 복잡도는 같아도 평균적으로 빠른 알고리즘 있을 수 있음

[ 큐, 스택 ]

  • 스택

    위에서 데이터 쌓음

    위에서 부터 데이터를 뺌

    예) 뒤로 가기 버튼, 되돌리기 단축키

  • 위에서 데이터 쌓음

    아래에서 부터 데이터 뺌

    예) 쇼핑몰 주문 처리 시스템

[ 해시 테이블 ]

  • 키-값(key-value) 쌍을 저장하며, 특정 키를 사용하여 빠르게 값을 검색할 수 있는 구조

  • 시간 복잡도 : O(1)

  • 해시함수 : 인덱스로 바꿔주는 역할

[ 클린 코드 ]

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

  2. 함수 이름은 가급적 동사로 지어라

  3. 매개변수는 너무 많이 쓰지 마라

  4. 불린값을 인자로 보내지 마라

  5. 축약어를 쓰지마라

💡 오늘 읽은 소감은? 떠오르는 생각 가볍게 적어보기

  • 클린 코드를 하는 법에 알게되어서 좋았고 누군가가 내 코드를 보고 바로 이해가도록 열심히 공부해야겠다는 생각이 들었다!