# 책정리

49개의 포스트
post-thumbnail

다양한 그래프 알고리즘3

순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘방향 그래프의 모든 노드를 '방향성에에 거르지 않도록 순서대로 나열하는 것'이다.대표적인 예시로는 선수과목을 고려한 학습 순서 설정이 있다.진입차수 :특정한 노드로 '들어오는' 간선의 개

2022년 12월 21일
·
0개의 댓글
·

다양한 그래프 알고리즘2

하나의 그래프가 있을 때 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 의미한다.최소한의 비용으로 구성되는 신장 트리를 찾아야 할 때N개의 도시가 존재하는 상황에서 두 도시 사이에 도로를 놓아 전체 도시가 서로 연결될 수 있게 도로를 설치하는 경우두 도시

2022년 12월 20일
·
0개의 댓글
·

다양한 그래프 알고리즘

다양한 그래프 알고리즘 그래프란 노드와 노드 사이에 연결된 간선의 정보를 가지고 있는 자료구조를 의미 트리 자료구조 부모에서 자식으로 내려오는 계층적인 모델 다익스트라 최단 경로 알고리즘에서는 우선순위 큐를 사용 우선순위 큐 우선순위 큐를 규현하기 위해 최소 힙이나

2022년 12월 19일
·
0개의 댓글
·

최단 경로

가장 짧은 경로를 찾는 알고리즘최단 경로 문제는 보통 그래프를 이용해표현하는데 각 지점은 그래프에서 '노드'로 표현되고, 지점 간 연결된 도로는 그래프에서 '간선'으로 표현된다.그리디 알고리즘과 다이나믹 프로그래밍 알고리즘이 최단 경로 알고리즘에 그래도 적용된다는 특징

2022년 12월 9일
·
0개의 댓글
·

다이나믹 프로그래밍

한 번 계산한 문제는 다시 계산하지 않도록 하는 알고리즘메모리 공간을 약간 더 사용하면 연산 속도를 비약적으로 증가시킬 수 있는 방법동적 계획법이라고 표현하기도 한다.다이나믹 프로그래밍으로 해결할 수 있는 대표적인 예시이다.피보나치 수열은 이전 두 항의 합을 현재의 항

2022년 12월 1일
·
0개의 댓글
·
post-thumbnail

[책 정리] 마이크로서비스 개발 - 01

책을 읽다가 내가 모르는 개념도 많고,나중에 다시 보면 도움이 될 것 같은 내용이 많아 처음부터 다시 읽으며 정리하기로 했다. '도메인 주도 설계로 시작하는 마이크로서비스 개발'이다.

2022년 11월 30일
·
0개의 댓글
·

이진탐색

범위를 반씩 좁혀가는 탐색 순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 데이터의 정렬 여부와 상관없이 가장 앞에 있는 원소부터 하나씩 확인해야 한다 따라서 데이터의 개수가 N개일 때 최대 N번의 비교 연

2022년 11월 29일
·
0개의 댓글
·

정렬

데이터를 특정한 기준에 따라서 순서대로 나열하는 것다양한 정렬 알고리즘 중 많이 사용하는 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬만 언급가장 작은 것을 선택한다는 의미데이터가 무작위로 여러 개 있을 때, 이 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와

2022년 11월 24일
·
0개의 댓글
·

EFS/BFS 2

탐색 알고리즘 DFS / BFS DFS(Depth-First Search) 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 그래프의 기본 구조 노드(Node)or정점(Vertex) 간선(Edge)으로 표현 그

2022년 11월 22일
·
0개의 댓글
·

DFS/BFS

많은 양의 데이터 중에서 원하는 데이터를 찾는 과정데이터를 표현하고 관리하고 처리하기 위한 구조그중 스택과 큐는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성삽입(Push) : 데이터를 삽입한다.삭제(pop) : 데이터를 삭제한다.오버플로(Overflow)

2022년 11월 22일
·
0개의 댓글
·

그리디

단순하지만 강력한 문제 해결 방법현재 상황에서 지금 당장 좋은 것만 고르는 방법매 순간 가장 좋아 보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다.거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가

2022년 11월 8일
·
0개의 댓글
·

복잡도

알고리즘의 성능을 나타내는 척도특정한크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지를 의미알고리즘을 위해 필요한 연산의 횟수시간 복잡도를 표현할 때는 빅오(big-O)표기법을 사용간단하게 가장 빠르게 증가하는 항만을 고려하는 표기법본 소스코드에서 가장 영향력이 큰

2022년 10월 27일
·
0개의 댓글
·

[클린코드] 8장 경계

이번 장에서 말하는 경계란 오픈 소스와 같은 외부의 코드를 말하며, 어떻게 본인이 개발 중인 코드와 깔끔하게 통합시킬지에 대해 설명한다.인터페이스 제공자는 기능의 핵심을 벗어나지 않는 선에서 최대한 많은 사람들이 사용할 수 있도록 설계를 하고, 사용자는 본인이 원하는

2022년 10월 26일
·
0개의 댓글
·

알고리즘이란?

문제를 푸는 방법, 정차를 의미어떤 특정한 문제가 있을 때 그 어떠한 경우를 생각해도 같은 방법으로 답을 도출할 수 있다.무수한 선택지 중에서 무작정 값을 정해 풀어 보는 행위를 반복무작정 진행하는 동작을 막힐 때까지 반복하고, 막히면 한 단계 되돌아가서 다음 선택지를

2022년 10월 24일
·
0개의 댓글
·

[클린코드] 7장 오류 처리

예외 처리를 오류 코드로 하게 되면 리턴 타입이 오류 코드이거나, 리턴하는 모든 객체가 오류 코드에 관한 맴버 변수를 항상 들고 있어야 한다.그리고 항상 리턴하는 경우 받는 쪽에서 오류 코드를 계속 확인해야 되고 순식간에 코드가 지저분해진다.조금 극단적이긴 하지만 이런

2022년 10월 9일
·
0개의 댓글
·

[클린코드] 6장 객체와 자료 구조

왜 이 주제가 여기 있지라는 생각을 할 수도 있지만 이 장 이후로도 계속 객체 지향과 관련된 코드 작성법이 나오기 때문에 간단하게 다루는 것 같다.도형에 대한 구체 클래스와 인터페이스가 존재한다.구체 클래스의 어떤 도형인지 알기 위해 항상 객체 생성시에 선언을 해줘야

2022년 10월 3일
·
0개의 댓글
·

[클린코드] 5장 형식 맞추기

다른 사람들과 협업을 하게 되면 다양한 규칙을 적용해야 한다.코드 외적으로는 VCS와 관련된 브랜치 전략, 이슈 관리, 커밋 컨벤션 등이 있다.코드 내적 형식으로는 인덴트, 함수 길이, 주석, 이름 등 정말 다양한 컨벤션을 정할 수 있다.또 이를 정했다면 Intelli

2022년 10월 2일
·
0개의 댓글
·

[클린코드] 4장 주석

사실상 주석은 기껏해야 필요악이다. 프로그래밍 언어 자체가 표현력에 풍부하다면, 아니 우리에게 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면, 주석은 거의 필요하지 않으리라. 아니, 전혀 필요하지 않으리라.주석은 정보를 쉽게 전달하려는 목적으로 작성된다

2022년 10월 1일
·
0개의 댓글
·

[클린코드] 3장 함수

작은 함수는 가독성을 높이는 가장 기본적인 방법이다.괜히 뉴스나 긴 글을 볼 때 사람들이 농담(?)으로 세 줄 요약을 해달라는 말이 나오는 것이 아니다.함수가 길어지면 자연스럽게 코드를 읽기 전부터 한숨부터 나오고 거북함이 생긴다.구글에 long code를 키워드로 검

2022년 9월 27일
·
0개의 댓글
·

[클린코드] 2장 의미 있는 이름

의미 있는 이름은 개발을 할 때 가장 기본적이면서도 너무 중요하다.디렉토리, 파일, 변수 등 개발을 하는 모든 곳에서 이름이 필요하고 이를 제대로 짓지 않으면 분명 언젠가 문제가 생긴다.무슨 의도로 작성한 코드인지 전혀 알 수 없으므로 언제나 사용 목적에 맞는 이름을

2022년 9월 27일
·
0개의 댓글
·