· AWS
벌써 사건이 발생한 지 한 달이라는 시간이 훌쩍 지나가버렸다. 사건은 5월 초, 아침에 일어나면 이메일을 확인하는 습관이 있는 나는 생전 받아 보지 못한 AWS에서 3통의 이메일이 와있었다.. 새벽 3시경 "AWS 고객 서비스에 요청하신 대로 귀하의 계정과 관련된 이메일 주소를 성공적으로 변경했습니다." 엥? 이게 무슨 소리이지 하고, 다른 이메일을 확인하였다. 해당 내용은 더욱 나를 간장 되게 만들었다.. "이 계정 손상으로 인해 사용자 계정(다른 계정 사용자 포함)에 보안 위험이 발생하며, 무단 작업으로 인해 과도한 요금이 부과될 수 있습니다. 과도한 요금으로부터 계정을 보호하기 위해 일부 AWS 서비스를 사용할 수 있는 기능을 일시적으로 제한했습니다. " 식은땀이 나기 시작하였다. 바로 아마존에 로..
· Spring
@SpringBootApplication @SpringBootApplication은 Spring Boot FrameWork에서 주요한 어노테이션 중 하나로, Spring Boot Application을 개발하는 데 사용 됩니다. 해당 어노테이션을 사용하면 Spring Boot는 Application 설정을 자동으로 구성하고, 필요한 Spring Bean 들을 자동으로 검색하여, classpath에 있는 라이브러리들을 기반으로 자동 구성을 활성화합니다. @SpringBootApplication에서는 내부적으로 다음과 같은 일을 수행합니다 @SpringBootConfiguration Spring Boot에서 사용되는 특수한 유형의 @Configuration으로, 설정 클래스를 지정할 수 있습니다. 클래스 내..
· C++
코딩테스트 연습 - 1주차 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이 programmers.co.kr 문제 설명 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 ..
Basic concept for probability(Definition and How to calcultate it) Random variable, Joint probability distribution, Joint probability, Marginalization Conditional probability, Bayes rule, Chain rule, Conditionally independent Bayesian networks Characteristics Model parameters Prediction / Inference inference by enumberation by sampling(BN) by variable elimination Learning Bayesian network를 이해를 위..
그래프(Graph)란? 연결되어 있는 객체 간의 관계를 표현하는 자료구조이다. 그래프 G는 (V, E)로 표시되며 V는 정점 또는 노드라고 불리며, 여러 가지 특성을 가질 수 있는 객체를 의미하고 E는 간선 또는 링크로 정점들 간의 관계를 의미한다. 그래프의 종류 무방향 그래프(undirected graph) 간선을 통해서 양방향으로 갈 수 있다. 방향 그래프(directed graph) 간선을 통해서 한쪽 방향으로만 갈 수 있다. 가중치 그래프(weighted graph) 간선에 비용이나 가중치가 할당된 그래프 그래프(graph)의 용어 인접 정점(adjacent vertex) :하나의 정점에서 간선에 의해 직접 연결된 정점 차수(degree) : 하나의 정점에 연결된 간선의 수 경로(path) : 간..
객체를 생성할 때, 보통 다음과 같이 코드를 작성할 것입니다.  public void builderPattern() { Car car = new Car(); ...} 하지만 객체를 생성할 때는, 빈 깡통으로 사용하기보다는 그 객체의 고유한 값을 갖은 상태로 객체를 사용할 것입니다. 그렇기 때문에 객체를 생성할 때는 파라메터를 전달하여 생성해야겠죠. 생성할 때 필요한 매개변수를 입력하여 다음과 같이 코드를 작성합니다.  public void builderPattern() { String param1 = "Chevrolet"; String param2 = "RS"; int param3 = 2024; ... Car car = new Car(param1, pa..
· JAVA
전통적인 자바 스레드 서버 애플리케이션에서 동시성 처리를 위해 스레드를 사용하는 것은 오랜 전통이었습니다. 예를 들어 스프링 프레임워크는 여러 요청을 처리하기 위해 멀티 스레드 모델을 채택한 프레임 워크입니다. 보통은 각 요청을 처리하는 데 하나의 스레드를 할당하는 방식으로 작동됩니다. 그러나 이 방식은 요청이 많아질수록 문제가 발생하게 됩니다.  과거에는 운영 체제 스레드의 제약으로 인해 동시 요청에 대응하기 위해 스레드 수를 늘리는 것이 어려웠습니다. 이는 스레드가 비용이 높고, 시스템에 사용 가능한 스레드 수가 제한되기 때문이죠. 또한 자바의 스레드는 운영 체제 스레드의 Wrapper로 동작하기 때문에 I/O 작업을 만나면 블로킹되어 다른 작업을 수행할 수 없는 경우가 발생합니다. 예를 들어 스프링..
· Docker
[Docker] 도커 엔진(Docker Engine)에 대해서 - 컴도리돌이회사에서 이제 카프카(kafka), 도커(docker), 엘라스티서치(elk), 등을 도입 얘기가 나오는데, 나는 아무것도 모릅니다. 😓 오늘은 도커 엔진에 대해 포스팅을 해볼 생각입니다. 아는 게 많고 해 봤던comdolidol-i.tistory.com Install Docker Desktop on MacInstall Docker for Mac to get started. This guide covers system requirements, where to download, and instructions on how to install and update.docs.docker.com 이전 포스팅에서 도커 엔진이 어떻게 구성되어..
· Docker
회사에서 이제 카프카(kafka), 도커(docker), 엘라스티서치(elk), 등을 도입 얘기가 나오는데, 나는 아무것도 모릅니다. 😓 오늘은 도커 엔진에 대해 포스팅을 해볼 생각입니다. 아는 게 많고 해 봤던 것이 많은 개발자가 얼른 되고 싶네요 😭😭 도커(Docker)도커는 클라이언트-서버 모델을 구현한 애플리케이션입니다.  도커 엔진은 도커 컴포넌트(Docker Componets)와 서비스를 제공하는 컨테이너를 구축하고 실행하는 기본 핵심 소프트웨어이에요.  Docker Demon, Docker Client, Docker image, Docker Container, Docker Registry로 주요 구성되어 있으며, 개발자가 흔히 도커라고 할 때, 주로 Docker Engjine을 의미합니..
· JAVA
사용자의 요청을 받고, 요청을 전달할 때 저는 대게 다음과 같이 HashMap을 사용합니다😓 @GetMapping("/") public String main(@RequestParam HashMap reqMap) { ... } 물론 위와 같이 사용하는 건 굳이 좋은 방식이 아닙니다. 필요한 값만 정의한 DTO 클래스를 사용하는 것이 일반적으로는 훨씬 더더더 좋죠 😊 하지만 개발하다 보면 필요했던 값이 필요하지 않아 지고, 생각하지 않은 값이 필요하게 되는 상황이 대게 많기 때문에 저는 HashMap을 사용합니다. 😔 (시간이 부족해...) 그런데 이렇게 자주 사용한 HashMap이 사실 어떻게 작용하는지 알지 못합니다. 물론 알지 못해도 지금까지 잘 사용했지만, 그래도 알고 사용하는 것과 무지로 사용하는 ..
Basic concept for probability(Definition and How to calcultate it) Random variable, Joint probability distribution, Joint probability, Marginalization Conditional probability, Bayes rule, Chain rule, Conditionally independent Bayesian networks Characteristics Model parameters Prediction / Inference inference by enumberation by sampling(BN) by variable elimination Learning Bayesian network를 이해를 위..
괄호 검사란? 괄호의 종류로는 대중소([,]), ({,}), ((,))가 있는데 3가지 조건이 성립해야 한다. 조건 1 : 왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 같아야 한다. 조건 2 : 동일 타입의 괄호에서 왼쪽 괄호는 오른쪽 괄호보다 먼저 나와야 한다. 조건 3 : 서로 다른 타입의 괄호 쌍이 서로를 교차하면 안 된다. 괄호 검사 예시 괄호 검사 알고리즘 문자열에 있는 괄호를 차례대로 조사하면서 왼쪽 괄호를 만나면 스택에 push() 오른쪽 괄호를 만나면 pop() 연산으로 스택의 top에 있는 괄호를 꺼냄 - 꺼낼 수 있는 요소가 없으면 즉, 스택이 비어 있으면 조건 2에 위배 - pop 한 왼쪽 괄호와 짝이 맞지 않으면 조건 3에 위배 마지막 괄호까지를 조사한 후에도 스택에 괄호가 남아 있으면..
· Python
1374번: 강의실 첫째 줄에 강의의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 줄마다 세 개의 정수가 주어지는데, 순서대로 강의 번호, 강의 시작 시간, 강의 종료 시간을 의미한다. 강의 www.acmicpc.net 1379번: 강의실 2 첫째 줄에 강의의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 줄마다 세 개의 정수가 주어지는데, 순서대로 강의 번호, 강의 시작 시간, 강의 종료 시간을 의미한다. 강의 www.acmicpc.net 풀이 과정 - 강의실 1. 강의실을 최소로 배정하는 개수를 구해야 한다. 2. heap에서 시작시간, 끝나는 시간, 강의실 번호를 heap push를 한다. 3. 첫 번째로 시작시간이 가..
Suffix trie Suffix tree Definition Construction with Naive algorithm 접미사 트라이(Suffix trie) edge가 문자를 가진 문자열 모음을 가진 그래프를 트라이(trie)라고 한다. 접미사 트라이(Suffix trie)는 접미사 트리(Suffix Tree)의 일반화된 개념이며, 문자열을 저장하기 위한 트리이다. 트라이 구축(trie Construction): O(|patterns|) 패턴 매칭 : O(|Text| * |LongestPattern|) text T(abaaba)의 모든 접미사(루트에서 리프까지)를 포함하는 트리로 예를 들어보자. 접미사 트리(Suffix tree) 접미사 트리(suffix tree)는 주어진 텍스트의 모든 접미사를 포..
· AWS
벌써 사건이 발생한 지 한 달이라는 시간이 훌쩍 지나가버렸다. 사건은 5월 초, 아침에 일어나면 이메일을 확인하는 습관이 있는 나는 생전 받아 보지 못한 AWS에서 3통의 이메일이 와있었다.. 새벽 3시경 "AWS 고객 서비스에 요청하신 대로 귀하의 계정과 관련된 이메일 주소를 성공적으로 변경했습니다." 엥? 이게 무슨 소리이지 하고, 다른 이메일을 확인하였다. 해당 내용은 더욱 나를 간장 되게 만들었다.. "이 계정 손상으로 인해 사용자 계정(다른 계정 사용자 포함)에 보안 위험이 발생하며, 무단 작업으로 인해 과도한 요금이 부과될 수 있습니다. 과도한 요금으로부터 계정을 보호하기 위해 일부 AWS 서비스를 사용할 수 있는 기능을 일시적으로 제한했습니다. " 식은땀이 나기 시작하였다. 바로 아마존에 로..
· AWS
벌써 사건이 발생한 지 한 달이라는 시간이 훌쩍 지나가버렸다. 사건은 5월 초, 아침에 일어나면 이메일을 확인하는 습관이 있는 나는 생전 받아 보지 못한 AWS에서 3통의 이메일이 와있었다.. 새벽 3시경 "AWS 고객 서비스에 요청하신 대로 귀하의 계정과 관련된 이메일 주소를 성공적으로 변경했습니다." 엥? 이게 무슨 소리이지 하고, 다른 이메일을 확인하였다. 해당 내용은 더욱 나를 간장 되게 만들었다.. "이 계정 손상으로 인해 사용자 계정(다른 계정 사용자 포함)에 보안 위험이 발생하며, 무단 작업으로 인해 과도한 요금이 부과될 수 있습니다. 과도한 요금으로부터 계정을 보호하기 위해 일부 AWS 서비스를 사용할 수 있는 기능을 일시적으로 제한했습니다. " 식은땀이 나기 시작하였다. 바로 아마존에 로..
· Spring
@SpringBootApplication @SpringBootApplication은 Spring Boot FrameWork에서 주요한 어노테이션 중 하나로, Spring Boot Application을 개발하는 데 사용 됩니다. 해당 어노테이션을 사용하면 Spring Boot는 Application 설정을 자동으로 구성하고, 필요한 Spring Bean 들을 자동으로 검색하여, classpath에 있는 라이브러리들을 기반으로 자동 구성을 활성화합니다. @SpringBootApplication에서는 내부적으로 다음과 같은 일을 수행합니다 @SpringBootConfiguration Spring Boot에서 사용되는 특수한 유형의 @Configuration으로, 설정 클래스를 지정할 수 있습니다. 클래스 내..
· C++
코딩테스트 연습 - 1주차 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이 programmers.co.kr 문제 설명 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 ..
Basic concept for probability(Definition and How to calcultate it) Random variable, Joint probability distribution, Joint probability, Marginalization Conditional probability, Bayes rule, Chain rule, Conditionally independent Bayesian networks Characteristics Model parameters Prediction / Inference inference by enumberation by sampling(BN) by variable elimination Learning Bayesian network를 이해를 위..
그래프(Graph)란? 연결되어 있는 객체 간의 관계를 표현하는 자료구조이다. 그래프 G는 (V, E)로 표시되며 V는 정점 또는 노드라고 불리며, 여러 가지 특성을 가질 수 있는 객체를 의미하고 E는 간선 또는 링크로 정점들 간의 관계를 의미한다. 그래프의 종류 무방향 그래프(undirected graph) 간선을 통해서 양방향으로 갈 수 있다. 방향 그래프(directed graph) 간선을 통해서 한쪽 방향으로만 갈 수 있다. 가중치 그래프(weighted graph) 간선에 비용이나 가중치가 할당된 그래프 그래프(graph)의 용어 인접 정점(adjacent vertex) :하나의 정점에서 간선에 의해 직접 연결된 정점 차수(degree) : 하나의 정점에 연결된 간선의 수 경로(path) : 간..
· Docker
[Docker] 도커 엔진(Docker Engine)에 대해서 - 컴도리돌이회사에서 이제 카프카(kafka), 도커(docker), 엘라스티서치(elk), 등을 도입 얘기가 나오는데, 나는 아무것도 모릅니다. 😓 오늘은 도커 엔진에 대해 포스팅을 해볼 생각입니다. 아는 게 많고 해 봤던comdolidol-i.tistory.com Install Docker Desktop on MacInstall Docker for Mac to get started. This guide covers system requirements, where to download, and instructions on how to install and update.docs.docker.com 이전 포스팅에서 도커 엔진이 어떻게 구성되어..
여러 방식으로 기능이 작동되는 메서드에서, 또 다른 기능을 추가해야 할 경우 어떻게 해야 할까요? 🤔 코드 형태에 따라 구현 방식이 천지 차이지만, if-else로 분기를 태워서 한 메서드에서 서로 다른 기능을 제공하는 경우가 많이 존재할 겁니다. 간단한 예시로 연산 종류에 따른 다른 동작을 수행시키는 계산기 코드를 다음과 같이 작성해 보았어요. public static int calculate(String operation, int operand1, int operand2) { int result; if (operation.equals("add")) { result = operand1 + operand2; } else if (operation.equals("subtract")) { result = op..
· PostgreSQL
B-treePostgreSQL에서 기본적으로 사용되는 인덱스 구조는 B-tree로 되어 있습니다. B-tree는 데이터베이스에서 빠른 검색 및 정렬된 데이터 액세스를 위해 설계된 효율적인 인덱스 구조입니다. B-tree의 인덱스 행은 페이지로 구성됩니다. 잎 페이지에서는 이러한 행에 데이터를 인덱싱할 키와 테이블 행(TID)에 대한 참조가 포함되며, 내부 페이지에서는 각 행이 인덱스의 자식 페이지를 참조하고 이 페이지의 최소 값을 포함합니다. B-tree의 몇 가지 중요한 특성이 다음과 같이 있습니다. B-tree는 균현이 잡혀 있으며, 각 잎 페이지는 루트로부터 동일한 수의 내부 페이지로 분리됩니다. 따라서 모든 값에 대한 검색은 동일한 시간이 걸립니다.B-tree는 각 페이지(보통 8KB)는 많은(수..
· JAVA
스위치문과 null (switches and null) 전통적으로, switch 문과 표현식은 선택기 표현식이 null을 검증할 때, NullPointerException을 throw 합니다. 따라서 null을 테스트하기 위해 switch 바깥에서 테스트해야 했습니다. // Prior to Java 21 static void testFooBarOld(String s) { if (s == null) { System.out.println("Oops!"); return; } switch (s) { case "Foo", "Bar" -> System.out.println("Great"); default -> System.out.println("Ok"); } } java 21부터는 선택기 표현식의 값이 null일 ..
· PostgreSQL
외래키는 한 테이블의 열이 다른 테이블의 기본 키(primary key)나 후보 키(candidate key)의 값을 참조하는 데 사용하는 제약 조건입니다. 즉 외래키는 데이터 무결성과 관계의 일관성을 유지하는 데 중요한 역할을 합니다. 데이터 무결성(Data Integrity)을 지키기 위해서는 데이터 무결성 제약조건에 대해 알고 있어야 합니다. 무결성 제약조건이란 데이터베이스의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건을 뜻합니다. PostgreSql에서는 다양한 방법으로 데이터 무결성을 제어할 수 있으며, 일반적으로 사용되는 제약조건 중에 외래 키(FOREIGN KEY) 제약 조건 이 있습니다. 외래 키 (Foreign Keys) 두 테이블 사이의 관계를 선언함으로..
· Tomcat
외부에서 접근해야 하는 리소스를 webapp 폴더 하위에 있는 resource 파일 안에 저장을 하였습니다. 하지만 WAR 파일을 재배포할 때마다 업로드된 파일들이 사라지면서 재 업로드 해야 하는 경우가 있기에, 외부에서 접근하는 경로를 톰캣 상위 루트 경로로 변경하고, 서버에서도 업로드할 때 해당 루트 경로에 넣으려고 합니다. 1. 서버에서 루트 경로로 파일 업로드 Apache Commons FileUpload 및 서블릿 API 라이브러리 추가합니다. commons-fileupload commons-fileupload 1.4 javax.servlet javax.servlet-api 3.1.0 provided '@WebServlet' 어노테이션은 서블릿을 정의하고 매핑하는 데 사용되는 Java EE 웹 ..
추상 팩토리 디자인 패턴(Abstract Factory Design Pattern)은 객체 생성에 관련된 일련의 인터페이스를 제공하여, 관련 객체들의 생성을 캡슐화하고 클라이언트 코드가 구체적인 클래스의 인스턴스를 직접 생성하는 것을 피하도록 하는 디자인 패턴 중 하나입니다. 이 패턴은 주로 "팩토리"라 불리는 인터페이스를 통해 다양한 종류의 관련 제품을 생성하는 데 사용됩니다. 각각의 팩토리는 특정 제품군에 대해 추상화된 인터페이스를 제공하며, 클라이언트 코드는 이러한 인터페이스를 통해 제품을 생성합니다. 이는 객체 생성 로직을 클라이언트 코드로부터 분리함으로써 시스템의 유연성을 향상하고, 객체 간의 결합도를 낮추어 변경과 확장에 용이하게 만듭니다. 추상 팩토리 패턴 구조(Abstract Factory..
이번에 회사에서 엘라스틱 서치에 대해서 도입을 한다. 하지만 해당 기술에 대해 무지하기 때문에 오늘부터 차근차근 공부할려고 한다. 오늘의 주제는 엘라스틱 스택에 대해 가볍게 내용 정리를 할려고 한다. 엘라스틱 스택(Elastic Stack) 엘라스틱 스택은 일반적인 빅데이터 파이프라인을 구성하기 위한 데이터 수집, 가공, 저장, 분석, 시각화에 필요한 모든 소프트웨어를 갖추고 있다. 비츠와 로그스태시는 데이터를 수집하고 가공하는 역할을 하며, 엘라스틱 서치는 저장하고 분석하는 역할을 담당한다. 마지막으로 키바나는 엘라스틱 서치에 저장된 데이터를 시각화하고 모니터링하는 역할을 수행한다. 엘라스틱 서치(Elastic Search) 엘라스틱 서치는 검색 엔진이지만, 다른 포털 사이트와 다르게 검색 엔진이 내부..
· Network
TCP/ IP (Transmission Control Protocol/ Internet Protocol) 현재의 인터넷에서 사용하는 프로토콜 그룹이며, 상호작용하는 모듈로 이루어진 계층적 프로토콜이다. 각 모듈을 특정한 기능을 제공하며 원래의 TCP/IP 프로토콜은 하드웨어에 설치된 4가지 소프트웨어 계층으로 정의되지만 현재는 5 계층으로 간주한다. 응용 계층(Application Layer) - 프로토콜 : HTTP, SMTP, FTP - PDU : Message OSI 모델의 최상위 계층으로 다양하게 존재하는 응용 환경에서 공통적으로 필요한 기능을 다룬다. 시스템 간의 응용 처리는 상호 간에 통신하면서 일련의 업무를 처리할 수 있도록 필요한 서비스 기능을 제공한다. 이메일, 파일 전송, 웹사이트 조회..
· C++
21944번: 문제 추천 시스템 Version 2 recommend, recommend2, recommend3 명령이 주어질 때마다 문제 번호를 한 줄씩 출력한다. 주어지는 recommend, recommend2, recommend3 명령어의 총 개수는 최소 1개 이상이다. www.acmicpc.net 해당 문제는 저번 포스팅에 언급한 version 1가 유사하게 풀었다. 문제에서 알고리즘 분류, 전체 문제, 난이도의 크기에 따라 문제 번호를 출력을 요구했기에 version 1 문제 보다는 map함수와 multiset 함수를 조금 더 사용하였다. 요번 포스팅은 함수의 쓰임만 언급하겠다.. 1. map group 그룹에서 가장 어려운 문제 또는 쉬운 문제를 출력하는 명령어가 있기에 그룹에 해당한 번호에 대..
outline Classical Problems of Synchronization Bounded-Buffer Problem Readers and Writers Problem Dining-Philosophers Problem Monitors 전통적 동기화 문제들(Classical Problems of Synchronization) 1. 유한 버퍼 문제(Bounded-Buffer Problem), 소비-생산자 문제(Producer-Consumer Problem) 생산자(Producer)는 데이터를 생성하고, 소비자(Consumer)는 데이터를 소비한다. 생산한 데이터는 중간의 버퍼(buffer)라는 저장 공간에 저장해 두고, 소비자는 버퍼에서 필요한 만큼 가져간다. 버퍼의 크기는 유한하다. 버퍼의 공간이 가..
2020/05/21 - [컴퓨터 전공 공부/프로그래밍언어론] - [프로그래밍 언어/Racket] Racket introduction - 컴도리돌이-(1) 2020/05/28 - [컴퓨터 전공 공부/프로그래밍언어론] - [프로그래밍 언어/Racket] Thunks, Laziness, Streams, Memoization -컴도리돌이-(2) 2020/06/04 - [컴퓨터 전공 공부/프로그래밍언어론] - [프로그래밍언어/Racket] Macros - 컴도리돌이-(3) 2020/06/11 - [컴퓨터 전공 공부/프로그래밍언어론] - [프로그래밍 언어/Racket] Datatype-Style Programming with Lists or Structs and more - 컴도리돌이-(4) Racket의 기본 구..
삽입 정렬(Insertion sort) 이란? -삽입을 사용하면서 정렬하는 알고리즘으로 삽입할 값(key)과 값(key)들이 정렬된 리스트가 있을 경우, 정렬된 리스트에 값을 삽입할 때 정렬된 순서를 보존하면서 삽입을 하는 것이 삽입 정렬이다.자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교 하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘 삽입 정렬(Insertion sort) 알고리즘 예제 배열에 5,2,4,6,1,3이 저장되어 있다고 가정하고 자료를 오름차순으로 정렬해 보았다. key 2 와 첫 번째 자료인 5를 비교한다. 5가 2보다 더 크므로 5를 2자리에 넣고 2를 5의 자리인 첫 번째에 기억시킨다. key 값 4랑 두 번째 자료인 5랑 비교한다. 5가 ..
행복한쿼콰
컴도리돌이