노마드코더 8

clean code 클린한 코딩을 하는 방법을 이야기- 노마드 코더

clean code 클린한 코딩을 하는 방법을 이야기 어떻게 발전시킬수 있는지 니가 어떤 언어로 코딩을 하든 획기적으로 발전시킬 수 있는 5가지 심플한 방법을 이야기 어떠한 함수명이 좋은지 총 몇개의 인수(argument)를 함수가 가져야하는지 요런 팁들을 주어가면 무슨 언어로 코딩을 하든 도움이 될 것 무엇보다 나의 팀원들과 미래의 내 자신이 행복할 것 왜 클린 코드가 중요한 가 좋은 코드라는 것은 일단 돌아가기만하면 되는 코드가 아니다. 좋은 코드란 코드 그 자체로 설명이 다 되는 코드이지 만약 팀으로 일한다면 좋은 코드는 팀원들이 딱 읽었을 때 읽기만 해도 무엇인지 이해가 되고 코드가 무엇을 하는지 물어볼 필요도 없이 이해가 되는 그런 코드이지 그게 가장 이상적인 코드의 모습 또한 혼자서 일한다면 ..

노마드코더 2023.02.15

Queues(큐)와 Stacks(스택) - 노마드 코더

그런데 오로지 우리의 상상속에만 존재 Queues(큐) 그리고 Stacks(스택) 실제로 프로그래밍 언어들에서 존재하지 않음 스택과 큐는 일종의 "규칙" 자료구조가 '큐' 혹은 '스택'으로 구분되기 위한 규칙들! 요런 녀석들을 "추상적 자료구조(Abstract Data Type)"라고 부른다 ADT는 자료구조의 한 형태 코드로 정의된 자료구조 방법이 아니라 구조의 행동양식만 정의된 것을 뜻함 규칙들만 이해하면 직접 스택과 큐라는 자료구조를 만들 수 있다는 얘기 행동양식들은 꽤나 쉬워 배열 위에 어떤 규칙을 설정한 모습 스택이 따라야하는 규칙을 설명하기 위해 팬케이크가 쌓여 있는 모습을 상상해보자 방금 만든 따끈따끈한 팬케이크를 그 위에 쌓겠지 먹을 떈 위부터 스택은 배열이 수직으로 쌓여있는 것 이 배열에..

노마드코더 2023.02.15

Hash Table - 노마드 코더

(1부)진짜진짜진짜 중요한 Hash Table이 무엇이고 어떻게 작동하는지 어떻게 이를 이용해서 겁나 빠른 배열을 만들 수 있는지 (2부)좀 더 자세하게 어떻게 Hash Tables가 작동하는지 원리를 알아보고 컴퓨터 레벨에서 어떻게 움직이는지 볼거 Hash Tables는 Key Value System을 이용해서 자료를 정리해 Key Value System의 한 예시로는 사전이 있을 것 단어를 찾고 = Key 해당단어의 뜻과 설명 = value 같은 함수가 각기 다른 프로그래밍 언어에 존재하는 것을 JS에서는 Object. Python에서는 Dictionary Go에서 map 언제 해시테이블 쓰는지 뻔할수 있지만 Hash Tables와 Array(배열)를 비교해보자 레스토랑의 메뉴를 배열에 저장한다면 선..

노마드코더 2023.02.14

정렬 알고리즘 - 노마드 코더

Big O는 알고리즘의 퍼포먼스를 이해하기 쉽고 효율적으로 작성하는 방법 하지만 항상 Big O가 모든 알고리즘을 완벽하게 설명하는 건 아냐 오늘 설명하는 알고리즘들은 모두 같은 BigO를 가지지만 각각의 퍼포먼스는 매우 다름 일단 Sorting이 뭔지 설명 뭔가 정리하는 것 A to Z로 사전처럼 정렬하거나 큰 수에서 작은 수 기준으로 정렬할 수 있다. 이진 검색처럼 빠른 알고리즘을 사용하려면 일단 먼저 배열 정렬을 해야해 Bubble Sort(버블정렬), Selection Sort(선택정렬), Insertion Sort(삽입정렬) 오늘은 쉬워 실제로 사람들이 정렬하는 방법과도 유사 시간복잡도 계산법도 쉬움 사실 더 좋은 알고리즘이 많고 그렇게 좋은 알고리즘은 아니라서 자주 사용되진 않아 그래도 버블정..

노마드코더 2023.02.14

BigO - 노마드 코더

더 느리다 더 빠르다 대신 좀 더 전문적이고 CS적인 표현으로 표현하는 법 알고리즘 스피드의 표현법 참고로 "빠르다", "느리다"는 "시간"으로 표현하지 않아 예를 들면 "초"단위로 표현하는 게 아니야 같은 알고리즘이라도 컴퓨터 따라 속도가 다를 수 있다. 왜냐면 하드웨어가 다르니까 따라서 알고리즘 스피드는 완료까지 걸리는 절차의 수로 결정 따라서 같은 작업을 수행하는데 5개의 스텝이 필요한 알고리즘이 10개의 스텝이 필요한 알고리즘보다 훌륭한 알고리즘 Linear Search(선형검색) 알고리즘은 한개씩 한개씩 검색 따라서 데이터가 10개라면 아이템을 찾기까지 10개 스텝이 필요 20개 자료는 20개 스텝 따라서 인풋사이즈가 N이라면 선형검색 알고리즘은 N스텝이 요구된다 아니면 오늘 배울 개념을 활용하..

노마드코더 2023.02.14

검색 알고리즘 - 노마드 코더

인풋이 많아지면 시간도 오래 걸려 Linear Time Complexity(선형 시간복잡도)라고 해. 더 발전된 방식 있어 이진검색 알고리즘(Binary Search) 모든 배열에 쓸 수는 없어 정렬된 배열(Sorted Array)에서만 사용 가능 어떤 알고리즘은 특정 자료구조에서만 사용 가능해 이진 검색 알고리즘이 바로 그 경우 선형 검색은 어느 배열에서도 가능하지만 이진 검색은 아냐 sorted array에서만 가능. 배열들이 순서대로 정렬된 경우에만 사용가능 그러나!! 이렇게 정렬된 배열에 아이템을 추가하는 것은 정렬이 안된 경우보다 시간이 더 걸려 그러나 또한 정렬된 배열에서 검색을 하는 것은 정말 겁나 빨라 정렬이 안된 경우보다 훨씬~~ 정렬 안된 배열은 그냥 공간이 있으면 맨 끝에 추가만 하면..

노마드코더 2023.02.14

Array 배열 기초개념

시간복잡도는 데이터 구조의 오퍼레이션 혹은 알고리즘이 얼마나 빠르고 느린지 측정하는 방법 실제 시간을 측정하는 것이 아니라 1초 1분단위가 아니라 얼마나 많은 "단계(steps)"가 있는가로 측정 어떤 오퍼레이션이 5개 단계만 요구된다면 20개 단계보다 훌륭한 알고리즘 단계(steps)에 관한 것. 초/분이 아님. 2가지 메모리 volatile(휘발성 메모리) vs non-nolatile(비휘발성 메모리) 비휘발성메모리는 하드디스크 같은 것 컴퓨터 꺼도 안사라짐 휘발성메모리는 RAM 끄면 초기화 프로그램이 돌아가고 변수 생성할때 RAM에 저장 Random Access Memory RAM에서 읽는 게 하드에서 읽는 것보다 빨라 왜냐면 이름에 적혀있는 것처럼 데이터 접속을 랜덤으로 할수있다. RAM을 박스 ..

노마드코더 2023.02.12

데이터 구조 & 알고리즘 시리즈 1- 노마드 코더

데이터 구조(Data Structure) 알고리즘(Algorithm) 알고리즘은 결국, 여러개의 지시사항이다. 어떤 액션을 수행하기 위해 컴퓨터가 수행해야하는 것들이다. 훌륭하고 효율적인 알고리즘을 찾으면 그걸 반복적으로 사용할 수 있다. 생활에도 아침에 눈뜨면하는일들 커피마시고 샤워하고 머리를 빗고 안경을 쓰고 그리고서 집을 나서는 행동들 샐러드를 만드는 알고리즘, 커피를 타는 알고리즘 목적을 달성하기 위한 여러개의 행동들 이를 통해 동일한 결과 산출 컴퓨터 알고리즘의 예시는 "지도" 우리집에서 부터 카페를 가기 위한 최단 거리 찾기: path finder 알고리즘 이미지의 퀄리티 손상없이, 어떻게 압축할 것인가 : 압축 알고리즘 어떻게 데이터를 암호화 할 수 있을까 : 암호화 알고리즘 데이터라는 것은..

노마드코더 2023.02.09