본문 바로가기

전체 글171

[묘공단] 완전 탐색이란? 알고리즘 기법 중 완전 탐색(Exhaustive Search)이란 것이 있다.이름만 들어도 '전부 다 보는 기법' 뭐 이런 것이겠거니 유추가 되지 않는가? 그런데 완전 탐색에도 종류가 있다.1. 브루트 포스(Brute Force): 가능한 모든 경우를 시도하는 방법이다. 비밀번호 해킹 같은 주제에서 듣기 쉽다.2. 백트래킹(Backtracking): 가능한 모든 경우를 시도하되, 불필요한 경우를 미리 제거해 효율을 높이는 방법이다. 주로 재귀적으로 사용되며 유망하지 않은 경로는 더 이상 탐색하지 않는 식이다.3. 재귀(Recursion): 문제를 여러 작은 문제로 나누어 푸는 방식이다. 재귀적으로 모든 가능한 경우를 시도한다.4. 순열과 조합(Permutations and Combinations): 가능.. 2024. 5. 20.
[묘공단] 다이나믹 프로그래밍을 배워야 하는 이유 다이나믹 프로그래밍.동적 계획법.내가 지금 이걸 왜 배워야 하는데? 대표적인 알고리즘 설계 기법이 그리디, 디바이드앤컹쿼(ㅋ), 다이나믹 프로그래밍이다.기본이니까 배워야지! 프로그래머스 레벨2 정도에 오니까 인덱스 가지고 배열을 요리조리 돌려서 문제 푸는 걸로는 안 된다.한 예를 들어 보겠다.https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr난 이 문제를 아래와 같이 풀었다.class Solution { public int solution(int.. 2024. 5. 20.
[묘공단] 너비 우선 탐색(BFS) 깊이 우선 탐색을 봤다면 너비 우선 탐색을 볼 차례다. 1. 너비 우선 탐색이란?깊이 우선 탐색은 시작 노드에서 한 방향으로 끝까지 간 다음에 다른 방향에 대해서도 반복하는 알고리즘이다.너비 우선 탐색은 이름에서 알 수 있듯이시작 노드에서 출발해서인접한 노드를 먼저 탐색하고,그 다음 인접한 모드들의 인접한 노드들을 탐색하는 방식으로 진행하는 알고리즘이다.BFS는 큐로 구현되는 경우가 많다.2. BFS를 굳이 쓰는 이유가 뭘까?최단 경로.가중치가 동일한 그래프에서 BFS는, 시작 노드로부터 목표 노드까지의 최단 경로를 보장한다. 다른 경우라면레벨 순서대로 탐색해야 하거나, 특정 깊이에서 모든 노드를 탐색해야 하는 경우에 쓴다. 3. BFS는 어떻게 동작하나?1. 시작 노드를 큐에 추가한다.* 잠깐 *트리라.. 2024. 5. 19.
[묘공단] 깊이 우선 탐색(DFS) 코테를 풀다 보면 깊이우선탐색, 너비우선탐색을 자주 볼 수 있다.해당 알고리즘은 무엇일까? DFS, BFS는 트리를 순회하는 방법이다. 1. 트리라고 하면 아래와 같은 그림을 바로 떠올릴 수 있다. 그럼 아래와 같은 구조를 바탕으로 풀어야 하는 문제 유형은 무엇이 있을까?트리 문제는 주로 트리 순회, 이진 탐색 트리(BTS) 연산, 균형 트리, 특수 트리, 그리고 트리의 경로와 거리 계산으로 나뉜다.모든 걸 다 보면 좋을 것이고, 앞으로 다 살펴볼 것이지만 이번 시간에는 트리 순회 문제에 대해서만 다룬다.트리 순회 문제는 DFS, BFS를 이용해 특정 노드를 찾거나 순서를 출력하는 식이다.기억하자. 트리를 순회해야 된다? -> DFS나 BFS로 푼다. * 참고 *이진 탐색 트리 연산 문제는 삽입, 삭제,.. 2024. 5. 19.
백엔드 30일 완성을 읽고 배운 것(60페이지까지) (31p)먼저 단일 스레드 버전의 서버를 만들어본다. 그런 다음 몇 가지 간단한 과정을 통해 스레드 풀을 사용하여 여러 동시 요청을 수용하도록 확장해본다.스레드란?더보기스레드는 컴퓨터 프로그램 내에서 실행되는 가장 작은 단위로, 프로세스 내에서 독립적으로 실행될 수 있는 흐름을 말합니다. 스레드는 프로세스의 자원을 공유하면서 동시에 여러 작업을 수행할 수 있게 합니다.주요 개념프로세스와 스레드의 차이:프로세스: 실행 중인 프로그램의 인스턴스로, 독립적인 메모리 공간을 가지고 운영체제에 의해 관리됩니다.스레드: 프로세스 내에서 실행되는 독립적인 작업 단위로, 프로세스의 자원을 공유합니다. 여러 스레드가 하나의 프로세스 내에서 동시에 실행될 수 있습니다.스레드의 장점:병렬 처리: 여러 스레드를 사용하여 작업.. 2024. 5. 18.
백엔드 30일 완성을 읽고 배운 것(30페이지까지) 나는 책을 통해서만 백엔드를 경험했지 밑바닥부터 내가 뭔갈 만들어 본 경험이 스프링 부트 3 한 번 밖에 없다.프로젝트를 시작하면서 백엔드 진도를 나갈 필요가 있어 작업하면서 공부도 할 겸 '백엔드 30일 완성' 책을 구매했다.앞으로 내가 위와 같은 제목으로 남기는 기록은 책을 읽으면서 내가 몰랐던 내용을 기록하는 것이다.나는 GPT랑 계속 대화하면서 배우고 그를 통해 알게 된 사실을 블로그에 남기는 걸 좋아한다. 이게 나에게 딱 맞다.따라서 본 블로그의 글들은 거의 나만을 위한 것이다. 남들 보기 좋으라고 친절하게 정리한 게 거의 없다.그래도 나의 '관점'이 블로그 방문객들에게 도움이 될 수도 있다고 생각한다.내가 잘 몰랐던 걸 남도 잘 모를 수 있는 거니까. (8p)Java 기반 웹 서버를 생성하고 .. 2024. 5. 17.
블록체인에서의 비잔틴 문제(Byzantine Generals Problem) 이해 잘 되게 이미지 하나 뽑으려고 검색을 해 보니 역시 GeeksforGeeks에 글이 있다.https://www.geeksforgeeks.org/byzantine-generals-problem-in-blockchain/ Byzantine Generals Problem in Blockchain - GeeksforGeeksA Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.www.ge.. 2024. 5. 17.
[경남] 블록체인 기본과정 - 5차시 - 2 오늘까지 나간 원 교재 진도 48/362+ 추가 교재 진도추가 교재부터 정리한다. https://www.geeksforgeeks.org/blockchain-structure/ Blockchain Structure - GeeksforGeeksA Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.www.geeksforgeeks.org 블록체인 구조는 이러하다(위 링크에 다 나와 있음.).나.. 2024. 5. 17.
[경남] 블록체인 기본과정 - 5차시 - 1 지금까지는 그냥 수업을 '듣기'만 했는데 이젠 따로 공부하지 않으면 안 될 수준이 되어 별도 기록한다.나만을 위한 정리라서 아마 다른 사람에게는 별 도움이 안 될 것이다. 블록체인 핵심 기술 (보안요소)1. 키 기반 암호기술키는 비밀번호 같은 것: 공개키와 개인키로 나뉘며, 공개키는 자물쇠, 개인키는 열쇠 역할을 한다.대칭키 암호화:키: 같은 키를 양측이 공유.암호화/복호화: 같은 키 사용.장점: 빠르고 간단.단점: 키를 안전하게 공유하는 것이 어려움.보관: 물리적으로 전달하거나 안전한 초기 세션을 통해 공유.비대칭키 암호화:공개키: 모두가 알 수 있는 자물쇠.개인키: 나만 아는 열쇠.암호화: 공개키 사용.복호화: 개인키 사용.장점: 키 공유 시 안전.단점: 대칭키보다 느림.대칭키와 비대칭키의 차이가 암.. 2024. 5. 17.
아키텍처 패턴을 고르면서 내가 한 고민 본 코너는 내가 만들고 있는 서비스와 연관된 기록이 올라가는 곳이다.(현재는 서비스 이름이 마스킹 처리 되어 있지만(e.g. ** ** ***)출시 후에는 마스킹을 벗길 거다.)주요 문서는 비공개지만 나머지는 다 공개다.아키텍처 패턴을 뭘로 정하면 좋을까?주요 고려사항사용자 수: 많은 사용자가 동시에 사용할 가능성이 있는가? > 그럴 가능성이 낮다고 생각한다.데이터 일관성: 데이터 일관성이 중요한가? (예: 결제 처리) > 중요하다.확장성: 시스템이 얼마나 확장 가능해야 하는가? > 최대한으로.유지보수성: 코드의 유지보수와 확장이 얼마나 쉬워야 하는가? > 최대한으로.복잡성: 시스템의 복잡도를 어느 정도로 관리할 수 있는가? > 상중하 중 중.추천 아키텍처 패턴: 마이크로서비스 아키텍처 (Microser.. 2024. 5. 16.
주요 아키텍처 패턴 처음에는 API 만드는 스타일만 확인하려 했는데 범용적인 아키텍처 패턴도 알아야 하겠더라.https://youtu.be/f6zXyq4VPP8?feature=shared1. Layered Architecture (계층형 아키텍처)특징:계층별 역할: 애플리케이션을 계층으로 분리하여 각 계층이 특정 역할을 담당합니다.프레젠테이션 계층: 사용자 인터페이스애플리케이션 계층: 비즈니스 로직도메인 계층: 비즈니스 규칙인프라 계층: 데이터베이스 및 외부 시스템과의 통합장점:코드 구조가 명확하여 유지보수가 쉽습니다.각 계층을 독립적으로 개발 및 테스트할 수 있습니다.단점:계층 간의 의존성이 복잡해질 수 있습니다.성능 저하의 원인이 될 수 있습니다.사용 사례:전통적인 엔터프라이즈 애플리케이션CRUD 기반 애플리케이션2. .. 2024. 5. 16.
주요 API 아키텍처 스타일 API 설계를 해야 되는데 해 본 적이 있어야지.모르면 어떻게 한다? 찾는다.https://youtu.be/4vLxWqE94l4?feature=shared1. SOAP (Simple Object Access Protocol)특징:프로토콜 기반: XML 기반의 메시징 프로토콜을 사용합니다.높은 보안: WS-Security와 같은 표준을 통해 높은 보안을 제공합니다.트랜잭션 지원: ACID 트랜잭션을 지원합니다.계약 기반: WSDL(Web Services Description Language)을 사용하여 서비스 계약을 정의합니다.사용 사례:금융 서비스와 같은 높은 보안과 트랜잭션 관리가 필요한 엔터프라이즈 시스템복잡한 비즈니스 프로세스 통합2. RESTful (Representational State Tra.. 2024. 5. 16.