분류 전체보기
-
cs opensource bookBook Review 2022. 9. 16. 19:30
https://github.com/practical-tutorials/project-based-learning?fbclid=IwAR2LWDZ6dNjQbyE7o6WkM-ZCowBc1IETYa-0ct-8LQwqipqKZdAIzKIEC8A 영문판 깃헙 모음글 더북 https://thebook.io/006889/ 모두의 자바 https://thebook.io/080200/ 파이썬으로 배우는 자료구조 핵심원리 https://thebook.io/080298/ 쉽게 따라 만드는 파이썬 주식 자동매매 시스템 https://thebook.io/006950/ 컴퓨터 사이언스 부트캠프 with 파이썬 https://thebook.io/006935/ 모두의 알고리즘 with 파이썬 https://thebook.io/00687..
-
린 소프트웨어 개발론 적용Book Review 2022. 4. 5. 18:09
로드맵 1. 현재 위치에서 시작해라 : 어떻게 가치와 이윤을 창출할 것인가? 2. 가장 큰 제약사항을 찾아라 : 가치와 이익을 창출하는 데 있어 능력을 제한하는 가장 큰 문제는 무엇인가? 3. 가장 큰 위험을 내다보라 : 향후 오랜 기간동안 꾸준히 가치를 창출하고 이윤을 내는 데 있어 가장 큰 위협은 무엇인가? 4. 문화를 평가해라 : 최일선 작업자와 동료를 깊이 존중하는 문화를 만들어라. 직원의 자부심을 빼앗는 요인을 제거해라. 5. 훈련시켜라 : 작업 절차를 개선하기 위한 체계적인 접근법을 사용하여, 팀을 어떻게 이끌 것인지, 작업자들을 어떻게 가르칠 것인지, 어떻게 도울 것인지에 대하여 팀 리더와, 관리감독자, 관리자들을 훈련시켜라 6. 가장 큰 문제를 해결해라 : 작업 팀에게 가장 큰 제약사항을 ..
-
자료구조 - 그래프Algorithm 2022. 2. 24. 20:51
정의 그래프(graph)는 연결된 객체들 사이의 관계를 표현할 수 있는 자료구조이다. 지하철 노선도나 전기회로 같이 다양한 객체들이 서로 복잡하게 연결되어 있는 구조를 표현할 수 있는 논리적 도구이다. (선형 자료구조, 트리도 그래프로 표현할 수 있다.) 그래프는 정점과 간선의 집합으로 구성되는데, 정점은 노드(node), 간선은 링크(link)라고 한다. 수학적으로 그래프는 G = (V, E)와 같이 표시하는데, V(G)는 정점들의 집합, E(G)는 간선들의 집합을 의미한다. 정점은 객체(object)를 의미하고, 간선은 이러한 객체들 간의 관계를 의미하는데, 정점 A와 정점 B를 연결하는 간선은 (A, B)와 같이 정점의 쌍으로 표현한다. 시각적인 형태가 그래프의 정의는 아니다. 아래의 두 그래프는 ..
-
계산기 프로그램 만들기 (파이썬, 후위 계산)python 2022. 2. 20. 17:03
계산기는 숫자와 함께 다양한 연산자도 나타나고, 괄호도 처리해야 하며, 특히 연산자들의 우선순위도 고려해야 정확한 결과가 나온다. 기본적으로 수식은 연산자와 피연산자를 이용해 표현하는데, 이들의 상대적인 위치에 따라 다음과 세 가지 표기법으로 구분된다. 전위 중위 후위 연산자 피연산자1 피연산자1 피연산자1 연산자 피연산자2 피연산자1 피연산자2 연산자 + A B A + B A B + + 5 * A B 5 + A * B 5 A B * + 컴퓨터는 다음과 같은 장점 때문에 후위표기 계산방법을 사용한다. - 괄호를 사용하지 않아도 계산 순서를 알 수 있다. - 연산자의 우선순위를 생각할 필요가 없다. 식 자체에 우선순위가 이미 포함되어 있기 때문이다. - 수식을 읽으면서 바로 계산할 수 있다. 중위 표현식은..
-
자료구조 - 이진 트리와 이진 검색 트리Algorithm 2022. 2. 14. 19:17
이진 트리 : 노드가 left child와 right child만을 갖는 트리를 이진트리(binay tree)라고 한다. 이때 두 자식 가운데 하나 또는 둘 다 존재하지 않는 노드가 있어도 상관없다. 이진 트리의 특징은 왼쪽 자식과 오른쪽 자식을 구분한다는 점이다. 예를 들어 노드 B의 left child는 D이고, right child는 E이다. 또 왼쪽 자식을 루트로 하는 서브 트리를 왼쪽 서브트리(left subtree), 오른쪽 자식을 루트로 하는 서브트리를 오른쪽 서브 트리라고 한다. 완전 이진 트리 루트부터 아래쪽 레벨로 노드가 가득 차 있고, 같은 레벨 안에서 왼쪽부터 오른쪽으로 노드가 채워져 있는 이진 트리를 완전 이진 트리(complete binary tree)라고 한다. 노드를 채우는 ..
-
자료구조 - 트리Algorithm 2022. 2. 14. 17:49
트리의 구조와 관련 용어 트리는 아래의 사진과 같이 노드(node)와 가지(edge)로 구성된다. 각 노드는 가지를 통해 다른 노드와 연결된다. 루트 : 트리의 가장 위쪽에 있는 노드를 루트라고 한다. 루트는 트리 하나에 1개만 존재한다. 리프 : 가장 아래쪽에 있는 노드를 의미한다. 단말 노드(terminal node), 외부 노드(external node)라고도 한다. 물리적으로 가장 밑에 위치한다는 의미가 아니라 가지가 더 이상 뻗어나갈 수 없는 마지막에 노드가 있다는 뜻이다. 비단말 노드(non-terminal node) : 리프를 제외한 노드. 내부 노드(internal node)라고도 한다. 자식 : 어떤 노드와 가지가 연결되었을 때 아래쪽 노드. 노드는 자식을 몇개라도 가질 수 있다. 부모 ..
-
자료구조 - 연결 리스트Algorithm 2022. 2. 11. 15:43
리스트는 데이터에 순서를 매겨 늘어놓은 자료구조다. 구조가 간단한 리스트로 선형 리스트(linear list) 또는 연결 리스트(linked list)가 있다. 위의 그림은 연결 리스트의 기본 구조다. A에서 F까지 데이터가 순서대로 나열되고 각 데이터가 화살표로 연결되어 있다. 이런 구조에서는 누군가를 건너뛰거나 뒤돌아 앞사람에게 연락해서는 안 된다. 연결 리스트에서 각각의 원소를 node라고 한다. 노드는 data와 pointer를 갖고 있다. 맨 앞에 있는 노드를 head node, 맨 끝에 있는 노드를 tail node라고 한다. 각 노드에서 바로 앞에 있는 노드를 predecessor node, 바로 뒤에 있는 노드를 successor node라고 한다. 배열로 연결 리스트 만들기 뒤쪽 노드 꺼..
-
알고리즘 - 보이어/무어법 (문자열 검색)Algorithm 2022. 2. 10. 16:40
Boyer-Moor method는 이론이나 실제 효율에서 KMP법보다 뛰어나서 실제 문자열 검색에서 널리 사용하는 알고리즘이다. 패턴의 끝문자에서 시작하여 앞쪽을 향해 검사를 수행한다. 이 과정에서 일치하지 않는 문자를 발견하면 미리 준비한 표를 바탕으로 패턴이 이동하는 값을 결정한다. 예를 들어 'ABCXDEZCABACABAC'에서 패턴 'ABAC'를 검색하는 과정을 살펴보자. 위 그림의 a처럼 텍스트와 패턴의 첫 문자를 나란히 놓고 패턴의 마지막 문자 C에 주목한다. 같은 위치에 있는 텍스트의 X는 패턴 안에 포함되어 있지 않다. 따라서 b~d 처럼 패턴을 이동해도 텍스트와 패턴은 일치하지 않는다. 이처럼 패턴에 포함되지 않는 문자를 텍스트에서 발견하면 그 위치까지는 건너뛸 수 있다. 그로므로 b~d..