개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
코딩은 언어 이외에 알아야할 것 들이 꽤나 많다
클린 코드는 나를 위해서 뿐만 아니라 팀을 위해서 필수
코딩도 건강이 좋아야만 지속적으로 할 수 있다
TIL (Today I Learned) 날짜
2023.09.02 (토)
오늘 읽은 범위
Episode 26 ~ 29
책에서 기억하고 싶은 내용을 써보세요.
정렬 (sorting) 알고리즘
같은 시간 복잡도 = O(N^2), BUT 다른 성능의 정렬 알고리즘 3가지
버블 정렬 (bubble sort)
2칸짜리 창문을 놓고 오른쪽으로 1칸씩 밀면서 왼쪽과 오른쪽을 비교하는 방식으로 정렬
원하는 숫자가 끝에 다르면 (1 사이클) 다음 사이클로 넘어가는데 이때 앞서 정렬이 끝난 숫자는 제외
선택 정렬 (selection sort)
가장 작은/큰 데이터의 위치를 따로 기억하는 방식으로 정렬
가장 큰 숫자와 작은 숫자가 위치를 교환하면 (1 사이클) 0번째는 무시하고 1번째 위치부터 사이클 재시작
버블 정렬보다 효율적 -> Why? 자리 바꿈이 사이클 당 한번이기 때문에
삽입 정렬 (insertion sort)
앞에 있는 데이터를 보면서 배치
교환이 아닌 밀어넣기
숫자 2개 중 하나를 밀어넣으면 (1 사이클) 다음 사이클로 이동
버블과 선택 정렬보다 빠름
시간 복잡도는 같은데 속도 차이가 나는 이유?
시간 복잡도를 단순히 측정 했을 때 같고 알고리즘은 초기 데이터 상태에 따라서 처리 속도가 달라짐
∴ 정렬에는 작업이 필요하고 시간 복잡도는 상황에 따라 다름
큐 (queue) / 스택 (stack)
프로그래밍 언어의 문법으로 데이터를 저장할 때 어떤 규칙만 부여
배열 + 규칙 = 큐/스택 규칙
아래 규칙만 따르면 무엇을 구현해도 됨
추상 자료 구조 (ADT, abstract data type)
스택: 수직 배열
규칙: LIFO (last in, first out)
위에서 데이터를 쌓음
위에서부터 데이터를 뺌
ex) 웹 브라우저 뒤로 가기 버튼, 되돌리기 단축키
큐:
규칙: FIFO (first in, first out)
위에서 데이터를 쌓음
아래에서부터 데이터를 뺌
ex) 쇼핑몰 주문 처리
해시 테이블
키와 값을 짝지어 모은 것
데이터를 더 쉽게 정리 및 더 쉽게 찾을 수 있음
시간 복잡도: O(1), 효율 좋음
해시 함수: 유저가 검색할 때 쓰는 키를 숫자, 즉 인덱스로 전환 시켜줌
해시 충돌 (hash collison): 같은 인덱스가 있을 경우 충돌함
해결방안: 같은 인덱스에 다른 배열 추가
클린 코드(= 설명이 필요 없는 코드)를 위한 5가지 팁
의미있는 변수, 함수의 이름을 적절히 사용
함수 이름은 무조건 동사로 짓고 1가지 액션만 잘 할 수 있게
매개변수는 너무 많이 쓰지 말 것 (3개정도)
많이 써야한다면 컨피겨레이션 방식으로 매개 변수를 묶어서 전달
불린(boolean)값을 인자로 보내지 말 것
축약어 쓰지 말 것
개발자의 책상 위 필수 아이템
컴
키보드
스탠딩 데스크
의자
키보드 (기계식)
모니터 & 모니터 암
필기 노트
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
책 <클린 코드> 꼭 읽어볼 것
챌린지/졸작/프로젝트/등등 최대한 코드를 클린하게 짜는게 좋을 것 같다
본격적인 취업 준비 전에 이 책을 한번 더 읽으면 좋을 것 같다
랩탑을 사면 모니터랑 모니터 암은 필수일 것 같다
스탠딩 데스크... 언젠간 꼭 사보리!
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
니꼬쌤 또는 다른 개발자들이 추천하는 기계식 키보드가 있을까?
오늘 읽은 다른사람의 TIL
X
과제 2: 게더타운 속 니꼬를 찾아라!