개발
-
[알고리즘 정리] KMP, 문자열 패턴 매칭 알고리즘Development/Algorithm 2020. 5. 4. 05:20
다룰 내용 Brute-Force로 패턴 매칭 KMP 알고리즘이란 무엇인가? KMP 알고리즘 구현 Brute-Force로 패턴 매칭 기존에 있는 문자열을 처음부터 끝까지 차례대로 순회하면서 패턴과 일치하는지 일일이 확인하는 방식으로 동작하게 됩니다. 기존 문자열을 패턴 길이만큼 비교해보기 때문에 시간 복잡도는 O(문자열 길이 * 패턴 길이)가 됩니다. 위의 그림처럼 하나 하나 일치하는지 비교를 하기 때문에 문자열의 길이가 길어진다면 비효율적인 탐색이 됩니다. KMP 알고리즘이란 무엇인가? 불일치가 발생한 텍스트 문자열의 앞부분에 어떤 문자가 있는지 미리 알고 있기 때문에 불일치가 발생한 앞부분에 대해서 다시 비교하지 않으면서 매칭이 일어나는지 판단할 수 있는 알고리즘입니다. 시간 복잡도는 O(문자열 길이 ..
-
[알고리즘 정리] Dijkstra(다익스트라)Development/Algorithm 2020. 5. 3. 21:08
다룰 내용 Dijkstra 알고리즘 벨만 포드 알고리즘 Dijkstra 알고리즘 시작 정점에서 거리가 최소인 정점을 선택해가면서 최단 경로를 구하는 알고리즘으로 탐욕 기법을 이용하는 Prim 알고리즘과 유사합니다. 그러나 다익스트라의 경우 근시안적인 관점 때문에 음의 가중치가 있다면 사용할 수 없습니다. Dijkstra import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Dijkstra { public static class Vertex implements Comparable{ int v, weight; public Vert..
-
[알고리즘 정리] Union-Find(유니온 파인드)Development/Algorithm 2020. 5. 3. 17:29
다룰 내용 서로소 집합이란 무엇인가? 상호 배타 집합을 표현하는 방법 Union Find 구현 서로소 집합(Disjoint-set)이란? 서로소 또는 상호 배타 집합들은 서로 중복되는 원소가 없는 집합을 말합니다. 상호 배타 집합을 표현하는 방법 연결 리스트로 구현 트리로 구현 상호 배타 집합 연산 Make-set(x) : 집합을 만드는 동작입니다. Find-set(x) : x가 속한 집합을 찾는 동작입니다.(이때 해당 원소의 대표자를 반환합니다.) Union(x, y) : 두 집합의 원소를 주고 합치는 동작입니다. 상호 배타 집합 - 연결리스트 구현 같은 집합의 원소들은 하나의 연결리스트로 관리합니다. 연결리스트의 맨 앞의 원소를 집합의 대표 원소로 생각해봅니다. 따라서 각 원소는 집합의 대표 원소를 ..
-
[Web Server] Apache Tomcat 다운로드 및 설치Development/Web Server 2019. 11. 15. 13:35
설치 개발 환경 Apache Tomcat 9.0 ▶ Apache Tomcat 설치 과정 오늘은 Apache Tomcat 9 버전 다운로드하는 방법을 포스팅하고자 합니다! 후에 포스팅에서는 Eclipse와 Tomcat 연동에 대한 포스팅을 하도록 하겠습니다! 우선 설치부터 시작합시다. Apache Tomcat 다운로드 사이트 https://tomcat.apache.org/download-90.cgi Apache Tomcat® - Apache Tomcat 9 Software Downloads Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest versi..
-
[Spring Framework] 스프링 시작하기1(STS 다운로드 및 설치)Development/Spring Framework 2019. 11. 15. 12:48
설치 개발 환경 STS 3.9.10.RELEASE 개발 환경 MySQL Server 8.0 Apache Tomcat 9.0 JDK 1.8.0 ▶ SpringFramework 설치 과정 Spring을 설치하는 데에는 두 가지 방법이 있습니다. - STS(Spring Tool Suite)를 설치하는 방법 - 기존 Eclipse에 plug-in 형식으로 설치하는 방법 저의 경우 기존 Eclipse에서 진행하는 프로젝트와 SpringFramework로 작업하는 프로젝트를 분리하고, Spring 개발을 편하게 하기 위해 STS로 결정했습니다! STS 설치 사이트 https://spring.io/tools3/sts/all Spring Tool Suite™ 3 (STS 3) Download page Use one o..
-
[프로그래머스] 42883_큰 수 만들기(c++)Problem Solving/PROGRAMMERS 2019. 11. 12. 20:40
문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예 numberkreturn 1924 2 94 123123..
-
[프로그래머스] 42587_프린터(java, c++)Problem Solving/PROGRAMMERS 2019. 11. 10. 00:12
문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 ..