[ IT 5분 잡학사전 2주 챌린지 9일차 ]

feat. 8일차 Quiz 제출완료!(:

 

 

버블정렬 

왼쪽, 오른쪽만 보면서 정렬 / 썩 좋은 알고리즘은 아님. 실제로 많이 사용도 X 

 

 

선택 정렬

가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하는 방식으로 버블 정렬보다는 훨씬 효율적. (자리를 바꾸는 연산이 사이클당 1번씩이기에)

 

 

삽입 정렬

교환이 아닌 밀어 넣음. 

 

*암기필요없이 컨셉 이해하기. 정렬에는 어떤 작업이 필요하고, 시간 복잡도는 상황에 따라 다를 있다는 . 

 

 

스택 & : 규칙개념의 자료구조로 문법이 따로 없다.

기존 프로그래밍 언어의 문법으로 데이터를 저장할 때 어떤 규칙만 부여하기만 하면되기 때문. (배열에 큐의 규칙을 부여하면 그 배열은 큐라고 할 수 있는 것처럼!) -> 이런 개념을 추상 자료구조라고 한다.

 

스택의규칙: LIFO : Last In, First Out

1. 위에서 데이터를 쌓는다.
2. 위에서부터 데이터를 뺀다

마지막에 들어간 녀석이 처음으로 나온다는 뜻. 실제로 스택은 뭘로 구현해도 상관이 없다. 단지 요 규칙만 지키면 되는것(:

 

 

큐의 규칙 : FIFO : First In, First Out

1. 위로 데이터를 쌓는다.
2. 아래에서부터 데이터를 뺀다.

상식적이다. 가장 오랫동안 기다린 사람이 가장 먼저 타는거다. 큐 역시 스택과 마찬가지로 뭘로 구현해도 상관X. 규칙만 지키면 된다.

 

 

그럼 스택/큐는 언제 사용할까?

웹 브라우저의 뒤로 가기버튼 (스택)
되돌리기 단축키 (스택)
쇼핑몰 주문 처리 시스템 (큐) -> (주문이 들어온 순서대로 데이터를 쌓고, 가장 먼저 온 주문부터 처리한다. 

 

 

해시 테이블

키와 값을 짝지어 모은 것으로, 이를 통해 우리가 데이터를 더 쉽게 정리할 수 있게 해준다.
사전처럼 사용가능.

선형 검색의 시간 복잡도는 O(N)인 반면, 해시 테이블은 무려 O(1)이다. Big-O 표기법으로 표현할 수 있는 가장 빠른 시간(상수 시간)인 것(: 쉽게 말해 해시 테이블에서는 어떤 값을 찾더라도 딱 한 단계만 거친다. 데이터를 추가, 삭제할 때도 O(1)이니 검색 외 다른 작업에서도 효율이 좋다. 

단 예외가 있는데, 해시 충돌이 이러날 경우! -> 충돌을 추가로 처리해야할 상황에는 해시 테이블에서 검색이 사실 항상 O(1)은 아니지만, 해시 테이블의 일반적인 검색 시나리오를 봤을 때를 고려해서 속도를 O(1)이라고 한다.

 

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

 

클린코드란 설명이 필요없는 코드. 코드를 읽기만해도 이 코드가 무슨 일을 하는지, 어떤 것을 의미하는지 물어볼 필요도 없이 스르륵 이해되는 그런 코드다. (클린 코드는 협업에서 무척 중요하며 혼자 일할 때에도 중요하다.)

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

2. 함수 이름은 가급적 동사로 짓기

함수 이름을 지으면 사실 더 좋은 점 : 우리가 만든 함수가 과도하게 많은 기능을 수행하고 있는지, 아닌지도 알 수 있다. 사실 함수는 1가지 역할만 하는게 좋다. ‘함수의 액션을 1개여야 한다.’ 이 이유때문이라도 함수 이름은 동사로 지을 것!

3. 매개변수는 너무 많이 쓰지 말기.

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

4. 불린값을 인자로 보내지 말기

불린은 참 혹은 거짓을 위한 자료형이다. 불린값을 함수의 인자로 보낼 수 있지만 ‘함수는 1가지 일만 잘해야 한다’는 규칙에 위배되므로 인자로 보내지 않는게 좋다.

5. 축약어 쓰지 말기

ex. user를 u로 쓰거나 email을 e로 쓰는 것 etc. 나 혼자만 알아볼 수 있을 만한 축약어 쓰지 말기. 

*코딩할 때는 창의력이 뿜뿜 넘치는 상태가 되는데, 그때 클린하지 못한 습관이 종종 나온다. 하지만 괜찮다. 어떤 개발자도 처음부터 코드를 클린하게 작성은 못한다. 원래 코드가 머릿속에서 떠오를 땐 클린한 코드를 작성하기 힘들기에- 우선 잘 실행되는 코드를 막 쓰고 나중에 치우자. (마지막엔 항상 클린하게 코드를 다듬는 작업하기!)
반응형