분류 전체보기 썸네일형 리스트형 18. 최소 공통 조상 (LCA: Lowest Common Ancestor) 2 앞에서 최소 공통 조상(이하 LCA) 알고리즘을 통해 트리 내 두 노드의 공통 조상을 찾는 방법을 설명드린 적이 있었습니다. 트리 내 두 노드의 가장 가까운 조상을 찾는 LCA 알고리즘을 통하여 노드가 공유하는 조상 노드 중 가장 깊은 노드를 찾는 방법을 알게 되었습니다. 가장 원초적 형태의 LCA 알고리즘도 물론 강력한 기능을 갖고 있는 알고리즘이지만 이를 강화시킨 버전의 LCA 알고리즘을 이번 챕터에서 말씀드리려고 합니다. 크기가 그렇게 크지 않은 트리에서는 특정 노드에서 조상을 찾기 위해 올라가는 과정이 그렇게 멀지 않습니다. 두 노드를 비교하여 깊이가 더 깊은 노드의 깊이를 상대적으로 깊이가 얕은 노드에 맞춰주고, 부모로 올라가는 과정을 몇 번 거치면 쉽게 LCA를 구할 수 있었습니다. 문제가 되.. 17. 투 포인터, 슬라이딩 윈도우 (1) 투 포인터와 슬라이딩 윈도우는 비교적 간단한 알고리즘이지만 강력한 알고리즘이기도 합니다. 직관적으로 보았을 때 O(N^2) 이상으로 해결해야하는 문제를 선형시간(O(N))으로 해결해주기 때문입니다. 투 포인터와 슬라이딩 윈도우가 완벽히 일치하는 알고리즘은 아니지만 설계적 측면에서 궤를 같이 한다고 할 수 있습니다. 투 포인터는 간단히 말해서 연속되는 value들을 이용하여 특정 목표에 맞는 값을 찾아주는 알고리즘이라고 할 수 있습니다. 여기서 주의해야할 것은 어디까지나 연속된 값들을 이용하여 풀어나가는 문제에 한정적으로 사용해야한다는 것입니다. 만일 주어진 값들의 연속성이 선행조건으로 주어지지 않는 경우에는 투 포인터를 사용할 수 없습니다. 그런 면에서 문제에서 주어진 값들을 그대로 활용해야하는 경우나 .. Spring 프로젝트 생성시 maven CoreException issue Spring 프로젝트를 Eclipse를 이용하여 생성하는 경우 아래와 같은 메시지가 뜨면서 pom.xml에 빨간 줄이가고 error가 발생하는 경우가 있다. Description Resource Path Location Type CoreException: Could not get the value for parameter compilerId for plugin execution default-compile: PluginResolutionException: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.7.0 or one of its dependencies could not be resolved: The following artifacts could n.. 누구나 자료구조와 알고리즘 도서리뷰 누구나 자료구조와 알고리즘 도서리뷰 목차1. 자료 구조가 중요한 까닭2. 알고리즘이 중요한 까닭3. 빅 오 표기법4. 빅 오로 코드 속도 올리기5. 빅 오를 사용하거나 사용하지 않는 코드 최적화6. 긍정적인 시나리오 최적화7. 해시 테이블로 매우 빠른 룩업8. 스택과 큐로 간결한 코드 생성9. 재귀를 사용한 재귀적 반복10. 속도를 높이는 재귀 알고리즘11. 노드 기반 자료 구조12. 이진 트리로 속도 향상13. 그래프로 뭐든지 연결하기14. 공간 제약 다루기 최근 들어 알고리즘이 굉장히 강조되기 시작했다. IT업계에서는 알고리즘 역량을 개발역량으로 적극적으로 활용하게됨에 따라 승진의 도구로써 혹은 이직의 도구로써 알고리즘을 공부하는 사람들이 점점 늘어나고 있으며, 특히 취업을 준비하는 대학생들은 알고리.. query 결과 csv로 저장하기 Node.js 서버 개발을 하던중 query 결과를 csv로 저장해줘야 하는 일이 있었는데 한글이 포함되어 있다 보니 파일내 한글들이 깨지는 이슈가 있었다. 단순히 query를 날려서 결과를 받아오면 결과물인 json 데이터를 parsing 하여 파일에 ','로 구분자를 두고 write하는 방식으로 구현하였기 때문에 query 결과에서의 한글이 깨지지 않았다면 특별히 문제될 것이 없다고 생각했었다. 실제로 query 결과에서는 한글이 전혀 깨지지 않고 있었다. 하지만 재밌게도 Notepad로 파일을 열면 한글이 정상적으로 보이는데, AcroEdit나 Excel로 파일을 열면 한글이 깨지는 것이었다. 지금이야 재밌지만 개발할 때는 재미없었다. 심지어 Notepad로 열었던 파일을 다시 저장하기만 누르고 다.. Properties Class 사용 프로그램에서 사용하는 Property들을 효율적으로 관리하기 위해서 Property 파일을 따로 만들어서 관리하는 경우, Properties Class를 사용하면 편리하게 정보를 불러올 수 있다. property 파일은 내부적으로 key=value의 형식으로 저장되어 있어야하며, #이 앞에 붙어있는 값인 경우는 주석처리되어 로드되지 않는다. 로드된 정보는 getProperty 함수를 이용하여 가져올 수 있고 값이 없었던 경우라면 null로 반환된다. 만일 default 값을 주고 싶으면 getProperty(key, defaultValue) 형식으로 처리하면 된다. import java.io.FileInputStream; import java.io.FileNotFoundException; import j.. Java xml parser import java.io.IOException; import java.util.logging.Logger; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class XMLParser { private static final String URL = "query.xml"; private static fi.. Node.js로 카카오 플러스친구 스마트 채팅 개발하기 (2) 카카오 플러스친구 서비스를 위한 웹 프로그램을 개발해보도록 하겠습니다. 최근에는 Language마다 웹 프로그래밍을 지원하는 프레임워크들이 존재하고 특히 Javascript를 서버 프로그램 개발영역으로 끌어들인 Node.js는 기존의 프론트엔드 개발자들이나 Javascript 개발자들을 백엔드 영역까지 진출시키는데 크게 기여했습니다. 개인적으로 플러스친구는 복잡한 기능을 수행하기보다 간단한 질의에 대한 응답형태로 구현되기 때문에 최대한 가볍고 간단하게 개발하는게 맞다고 생각했고, Node.js를 이용하여 개발하였습니다. Node.js를 처음 사용해보시는 분들을 위하여 Node.js 설치부터 개발까지 한번 같이 해보도록 하겠습니다.우선 Node.js를 설치합니다. Node.js를 설치하는 방법은 설치파일을.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 15 다음