반응형

전체 글 226

[Java-Algorithm] 조합 Combination 알고리즘

이전부터 궁금했던 조합 알고리즘. 조합이란 ...? nCr n개의 숫자중 r개를 뽑아서 만들수있는 조합을 구한다.... 예를 들어 [1, 2, 3] 이란 숫자 배열에서 만들수있는 조합은 [1, 2] [1, 3] [2, 3] [1,2,3] 이된다. 순열을 뽑았을 때 나오는 [2, 1] [3, 1] [3, 2] 등은 중복이라서 제거된다. 일단 기본적으로 알고리즘을 먼저 보자... public class combination { public static void main(String[] args) { //ABCD 4개를 받아서 조합을 만든다. String[] arr = {"A", "B", "C", "D"}; //자리수별 체크 1개뽑을때부터 n개 다 뽑을때까지 //n개중에 i개 뽑기 //2개부터 뽑자 boole..

[Java-Basic] Java 정규표현식

Java 정규표현식 만드는 방법 기록!!!!! 표현식설명 ^ 문자열 시작 $ 문자열 종료 . 임의의 문자 [단 ‘'는 넣을 수 없습니다.] * 앞 문자가 0개 이상의 개수가 존재할 수 있습니다. + 앞 문자가 1개 이상의 개수가 존재할 수 있습니다. ? 앞 문자가 없거나 하나 있을 수 있습니다. [] 문자의 집합이나 범위를 표현합니다. -기호를 통해 범위를 나타낼 수 있습니다. ^가 존재하면 not을 나타냅니다. {} 횟수 또는 범위를 나타냅니다. () 괄호안의 문자를 하나의 문자로 인식합니다. | 패턴을 OR 연산을 수행할 때 사용합니다. \s 공백 문자 \S 공백 문자가 아닌 나머지 문자 \w 알파벳이나 문자 \W 알파벳이나 숫자를 제외한 문자 \d [0-9] 숫자 \D 숫자를 제외한 모든 문자 (?..

[Javascript] 객체 배열 중복 제거 방법

Vo List를 서버단에서 받아 화면에서 사용할때, 특정 변수를 기준으로 중복제거를 하고싶을때가 있을것이다. 항상 for문을 돌리고, include를 쓰고 이것저것 많이 했었는데, 이번에는 filter와 findIndex를 사용하여 중복 제거를 해보았다. 자주 사용될것 같아 정리..! 방법 : var voGroupList = voList.filter(function(item1, idx1){ return voList.findIndex(function(item2, idx){ return item1.voId == item2.voId }) == idx1; }); item1 / item2 = vo 객체 idx1, idx2 = 인덱스

[Java-Algorithm] 백준 4307 개미 -그리디 알고리즘

그리디 알고리즘 문제 2번째 - 백준 개미 문제 : https://www.acmicpc.net/problem/4307 4307번: 개미 개미 여러 마리가 길이가 lcm인 막대 위에 있다. 각 개미의 이동 속도는 모두 일정하며, 1cm/s이다. 개미가 막대의 마지막까지 걸어간다면, 개미는 그 즉시 떨어지게 된다. 또, 두 개미가 만나게 된 www.acmicpc.net 풀이 : 괜히 복잡하게 생각했다가 낭패봤던 문제.... 간단하게 풀이를 설명하자면. 개미가 만나서 반대로 돌고 하는 부분을 생략하고 생각하면된다. 함정....! 결국 최소 시간= 개미들이 다떨어지는 시간 = 끝에서 가장 멀리있는 개미의 위치 = 1개미 마다 양끝에서의 거리를 재서 가장 짧은 거리를 기준으로 temp를 만든다. => 그 temp..

[Java-Algorithm] 백준 5585 거스름돈 -그리디 알고리즘

최적해를 구하는 데에 사용되는 근사적인 방법, 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해나가는 방식이다. 하지만 선택들을 계속 수집해서 최종적인 해답을 얻었을 경우 이 해답이 최적의 답이라는 보장은 없다. 적용이 잘되는 경우 1. Greedy Choice Property (탐욕 선택 조건) 앞의 선택이 이후 선택에 영향을 주지 않는 경우. 즉, 각 사건들이 서로 독립적일 때 잘 맞는다. 2. Optimal Substructure (최적 부분 구조 조건) 문제에 대한 최적해가 부분 문제에 대해서도 최적인 경우 이문제는 쉬운 문제다 그리디가 뭐지? 하는 나도 풀었던 문제 정리.. 문제 : https://www.acmicpc.net/problem/5585 5585번: ..

[Java-Basic] JVM 메모리구조 및 개념

JVM(Java Virtual Machine) 이란? 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체 CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다. JVM은 크게 ClassLoader / Execution Engine / Garbage Collector / Runtime Data Area 로 나뉜다. 각각의 아이들이 무엇을 의미하는지 알아보자.! JVM의 구성 Class Loader Java 소스파일 (.java)를 .class 파일(바이트코드)로 컴파일 한다. 생성된 클래스파일들을 엮어서 JVM이 운영체제로부터 할당받은 메모리영역..

[Java-Algorithm] Programmers 다리를 지나는 트럭 풀이

아 엄청 헤맨 문제.... 결국 풀이를 보고말았다... 다른분들은 아주 심플하게 푼것같다. 내 나름대로 정리를 해놓으려고 한다. 1). 우선 Class를 따로 빼서 관리할수 있도록 만든다. 무게와 진입시점을 담고있는 아이를 Queue에 넣어서 진행 시킬것! class Truck { int weight; int entry; Truck(int weight, int entry){ this.weight = weight; this.entry = entry; } } 2). 여기서 중요한 부분은 기다리는 Truck Queue와 다리를 지나는 Truck Queue로 구분짓는다. 다리에 진입하는 시점의 시간을 트럭Class객체에 담아 queue에 넣어준다. 트럭의속도는 1임으로 시간이 지날때 지나가는 Queue에 있는 ..

[Java-Algorithm] BFS 넓이 우선탐색 알고리즘이란? 인접리스트

BFS 정의 BFS는 현재 위치에 인접한 모든 위치의 노드를 방문하고, 그 이웃 노드들의 또 다른 이웃 노드들을 방문하는 것은 그 다음에 진행하는 것을 의미. 큐를 이용해서 순환적 형태로 구현하는 것으로 공부해보려고 한다. BFS 넓이 우선 탐색 (Breadth Fisrt Search) "근처부터 확인하자"와 같이 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 알고리즘이다. 시작 정점을 지나고 나면 깊이가 1인 모든 정점을 방문하고, 그다음에는 깊이가 2인 모든 정점을 방문한다. 2..3..4... 이런식으로 나중에는 더 이상 방문할 곳이 없을 때 탐색을 종료 * 루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법 * 사용하는 경우:..

[Vert.x] Vert.x란? Vert.x 개념 잡기

Vert.x의 개념을 잡아보는 시간..! 정리 하면서 다시한번 개념을 잡아보자...! Vert.x란? Node.js와 같은 비동기 서버 프레임워크이다. 먼저 Tomcat 설명을 통해 이해를 도와보자..! Tomcat의 경우 Request가 들어오면 Request Queue에 적재되고, queue에 쌓인 요청들은 Thread pool에 있는 Thread에게 하나씩 하나씩 할당되어 요청을 처리하는 방식이다. 요청을 마치게되면, request가 들어온 Connection으로 요청완료된 response를 보내고, 해당 작업을 한 Thread는 Thread Pool에 다시 들어가게된다. 이 구조에서, Tomcat이 동시에 처리할수 있는 Connection의 수는 보통 Thread pool의 Thread 수만큼이라..

[Java-Basic] Reflection API 편리하게 사용하여 Vert.x Verticle 사용하기

Vert.x로 데몬을 만들다가 instance, worker 및 poolsize를 설정하는것을 편리하게 Annotation으로 만들때 사용하려고 찾아보다 알게된 내용. 언제든지 편하게 사용할 수 있을것 같아 기록..! => Reflection API를 편리하게 사용할수 있게 해주는 라이브러리가있다!!! org.reflections reflections 0.9.10 요 라이브러리를 사용하면 아주 편리하게 Annotation에 정해놓은 값들을 꺼내서 사용할 수 있다. 아래는 사용부분 코드 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Verticle { boolean isWorker() default true; ..

반응형