Euge.study( );
article thumbnail

오늘 TIL 3줄 요약

  • LIFO 스택과 FIFO큐 규칙만 지키면 되는 추상 자료구조(ADT)
  • 프로그램의 속도를 더 바르게 만들 수 있는 해시 테이블
  • 클린코드 매우중요 꼭읽어라! 깨끗한 코딩은 모두가 행복해지는 지름길!

TIL (Today I Learned) 날짜

2023.01.21

 

오늘 읽은 범위

에피소드 26 정렬 알고리즘이 뭐죠?

에피소드 27 스택,큐가 뭐죠?

에피소드 28 해시 테이블이 뭐죠?

에피소드 29 개발자 필수 교양 클린코드!

 

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

[에피소드26 정렬 알고리즘이 뭐죠?]

  • 1. 버블정렬 : 왼쪽 오른쪽만 보면서 정렬, 실제로 많이 사용하지않음.
  • 2. 선택정렬 : 하나를 콕 집어가며 정렬, 가장 적은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하는 방식으로 작업
  • 3. 삽입정렬 : 앞에 있는 데이터를 보며 배치하는 정렬,  특징은 교환을 하는것이 아닌 밀어넣는것.
  • 삽입정렬은 버블, 선택정렬보다 빠르다.

[에피소드27 스택,큐가 뭐죠?]

  • 큐(queue)나 스택(stack)이라는 자료구조는 배열처럼 실제로 존재하는 개념은 아니다.
  • 기존프로그래밍 언어의 문법으로 데이터를 저장할 때 어떤 규칙만을 부여하기만 하면 됨.
  • 배열에 큐의 규칙을 부여하면 그 배열은 큐라고 할수 있다. 이런 개념을 추상 자료구조(ADT)라고 한다.
  • 팬케이크 같은 스택의 규칙 1. 위에서 데이터를 쌓는다. 규칙 2.  위에서부터 데이터를 뺀다. 이방식을 LIFO(Last In First Out)이라고 한다.  마지막으로 들어간것이 처음으로 나온다.라는 뜻 처음구운 팬케이크가 밑에 쌓이고 마지막으로 구운케이크를 제일 먼저 먹는것처럼!
  • 실제로 스택은 뭘로 구현해도 상관이 없고, 규칙만 지키면 된다.
  • 버스정류장으로 생각하는 큐의 규칙 1. 위로 데이터를 쌓는다. 규칙 2. 아래에서 부터 데이터를 뺀다. 오랫동안 기다린사람이 가장 먼저 타는것을 생각해라! 이방식을 FIFO(First In First Out)
  • 스택과 마찬가지로 뭘로 구현해도 상관없고, 규칙만 지키면 된다.
  • 스택의 사용 : 웹브라우저의 뒤로가기 버튼, 되돌리기 단축키
  • 큐의 사용 : 쇼핑몰 주문처리 시스템

[에피소드28 해시 테이블이 뭐죠?]

  • 해시테이블은 키와 값을 짝지어 모은 것
menu = [ // 배열로 저장
	{name : "아메리카노" , price : 10},
	{name : "초코라떼" , price : 8},
	{name : "딸기스무디" , price : 15},
	{name : "카푸치노" , price : 12},
];

menu = { // 해시 테이블로 저장
	아메리카노 : 10,
	초코라떼 : 8,
	딸기스무디 : 15,
	카푸치노 : 12,
};
  • 배열은 데이터를 처음부터 모두확인(선형검색) 해야 검색가능. 해시테이블은 검색어를 바로 캐치 한다.
  • 선형검색의 시간복잡도는 O(N²), 해시테이블은 O(1)이다.
  • 해시 테이블의 속도 비결 > 해시함수 : 글자 수를 그대로 인덱스로 반환하도록 구성. 해시충돌시 바로 같은 인덱스에 또 다른배열을 넣어서 다시 선형검색을 해서 찾음. 

[에피소드29 개발자 필수 교양 클린코드!]

  • 클린코드를 위한 5가지 꿀팁

클린코드 : 코드를 읽기만 해도 이코드가 무슨일을 하는지 어떤것을 의미하는지 물어볼 필요도 없이 이해되는 설명이 필요없는 코드

 

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

setInterval (eatKimchi , 86400); //무슨숫자인지뭐름

const SECONDS_IN_A_DAY = 86400; //하루를 초로 바꾼값인걸 알게됨

setInterval (eatKimchi , SECONDS_IN_A_DAY ); 

 

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

function userData(){ } //무슨 함수인지모름

function loadUserData(){ } // 사용자 데이터를 호출하는 함수 인것을 알수있음.

 

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

불가피하게 변수를 많이 설정해야 한다면 컨피겨레이션 오브젝트라는 방식으로 매개분수를 묶어 전달.

 function makePayment(price, productId, size, quantity, userId){ ..생략..} 

      makePayment(35, 5, "xl",2,"nico")

function makePayment({price, productId, size, quantity, userId}){..생략..} // 함수 파악하기 좋음

    makePayment({

            price: 35,

            productId: 5,

            size: "xl",

            quantity: 2,

            userId: "nico",

    })

 

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

 

5. 축약어를 쓰지 마라.

 

 

 

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

  • 스택과 큐 처음에 들었을 땐 저게 뭐야.. 생소한데 라고 생각했는게 사용하는 곳을 보니 우리와도 너무 가까운곳에서 사용되고 있었다.
  • 나는 더티코딩을 했었구나.. 당장 클린한 코드를 위해 습관을 들여야겠다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  •  
profile

Euge.study( );

@euge

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!