Java

·Deploy
Jenkins, Docker, Ansible를 이용하여 AWS로 배포를 해보자. 최종적으로는 AWS EC2 인스턴스 3개로 배포하게 될 것이다. 각 인스턴스를 jenkins-server, docker-server, ansible-server 라고 하자. jenkins-server로 사용될 EC2 를 하나 생성하고 해당 EC2에 Java를 설치한 후 해당 서버를 AMI로 만들 것이다. Java가 설치된 AMI로 EC2 서버를 추가로 생성할 것이다.    1. AWS EC2 인스턴스 생성먼저 AWS로 접속하여 리전이 서울인지 확인한 후에 EC2 탭으로 들어간다.  인스턴스 생성을 위해 인스턴스 시작을 클릭한다. 다음과 같이 설정한 후 인스턴스를 시작한다.인스턴스 이름 : cicd-project-ec2 (추후..
설명      풀이 결정 알고리즘이란 이분 검색을 이용하는 것이다. lt와 rt 사이에 반드시 답이 있다고 보장할 수 있는 문제에만 적용이 가능하다. 답으로서 가능한지 범위를 좁혀 나가면서 최종적으로 답을 결정한다. 좋은 답을 향해 좁혀 나가는 알고리즘이다.  solution 함수 로직은 다음과 같다.정답이 될 변수 answer를 0으로 초기화 한다.lt는 배열의 최댓값이고, rt는 배열의 합이다.배열의 최댓값은 Arrays.stream(arr).max().getAsInt() 로 구한다.배열의 합은 Arrays.stream(arr).sum() 으로 구한다.이분 탐색을 수행한다. lt가 rt보다 작거나 같을 때 반복한다. while (lt 여기서 mid 변수는 DVD 한 장의 용량을 의미한다. mid 변수..
설명       풀이 이 문제를 통해 이분 검색 (Binary Search) 알고리즘에 대해 학습했다. 이분 검색은 오름차순이던 내림차순이던 정렬된 상태에서 수행해야 한다.앞에서부터 쭉 탐색하는 것은 순차 검색이라고 하며, 시간 복잡도는 O(n)이다.이분 검색의 시간 복잡도는 O(log(n))이다. 핵심은 다음과 같다.배열은 오름차순 정렬 되어있다고 가정한다. (Arrays.sort를 이용한다.)arr은 데이터가 들어있는 int형 배열이고, m은 찾고자 하는 수이다.두 포인터 변수 lt, rt, 그리고 mid 변수를 이용한다. lt는 왼쪽 인덱스 번호를 나타내며, rt는 오른쪽 인덱스 번호를 나타낸다. mid 변수는 (lt + rt) / 2 이다.lt가 rt보다 같거나 작은 동안 반복한다.(arr[mid..
설명      풀이 자료구조는 ArrayList를 사용한다.Point 클래스는 우리가 정의해야 할 클래스이다. 이 클래스는 x좌표, y좌표를 갖고 있으며 Comparable 인터페이스의 구현 클래스이다. Comparable 인터페이스에서 구현해야 할 메소드는 compareTo이다.오름차순인 경우 this.멤버변수 - o.멤버변수, 내림차순인 경우 o.멤버변수 - this.멤버변수 를 사용한다. 즉, 음수값이 리턴되도록 하면 된다.정렬은 Collections.sort를 호출하면 된다. 그럼 Comparable 인터페이스를 통해 compareTo의 정렬 기준에 의해 정렬이 수행된다.   코드와 함께 설명을 정리하면 다음과 같다. 아래는 핵심인 Point 클래스이다. 1) Point 클래스는 Comparabl..
설명      풀이 자료구조는 int형 배열을 사용한다. 로직은 다음과 같다.정답으로 리턴할 데이터는 ArrayList 형으로 생성한다.원본 배열을 깊은 복사한다. clone 메소드를 이용한다. 이 배열을 복사된 배열이라고 하자.복사된 배열을 오름차순 정렬한다. Arrays 클래스의 sort 메소드를 이용한다.반복문을 돌면서 원본 배열과 복사된 배열의 값을 비교한다.값이 다르다면 정답에 add 한다. 이 때 인덱스 값에 +1을 해야 배정받은 번호가 된다. (번호는 1부터 시작이고 인덱스는 0부터 시작이므로)정답 배열을 리턴한다.    코드 package inflearn._6_6;import java.io.BufferedReader;import java.io.BufferedWriter;import java..
설명       풀이 자료구조는 int 배열을 사용하며 알고리즘은 정렬을 활용한다.  로직은 다음과 같다.캐시 크기만큼의 int 배열을 생성한다.작업이 들어있는 배열을 돈다.초기 int형 변수 pos를 -1로 둔다. 이 변수는 현재 수가 캐시에 존재하는지 확인할 수 있는 변수이다.캐시 배열을 돌면서 현재 수가 캐시 배열에 존재하는지 확인한다.존재한다면 해당 인덱스 변호를 pos 변수에 저장한다.pos가 -1 이면 캐시에 현재 값이 존재하지 않는다는 뜻이다. 즉, miss 인 경우이다.배열의 맨 뒤부터 1번 인덱스까지 1 감소시키며 반복문을 돈다.오른쪽으로 수를 하나씩 민다. 캐시 배열의 i-1 번째 인덱스의 값을 캐시 배열의 i 번째 인덱스의 값에 넣는다.pos가 -1이 아니면 캐시에 현재 값이 존재한다..
·Baekjoon
문제   풀이큐를 사용하는 문제이다. 다만 큐에 저장을 할 때, 배열 형태로 저장했다. 큐의 [0]은 인덱스 번호, 큐의 [1]은 필요한 피자의 양이다.그래서 큐를 LinkedList queue 로 선언했다. 핵심 로직은 다음과 같다. 큐가 빌 때 까지 반복한다.시간을 1 증가시킨다.큐의 가장 첫 번째 요소를 가져온다.요소[0]은 고유한 사람의 인덱스 번호, 요소[1]은 필요한 피자의 양이다.요소[1]-1 이 0이라면 정답 배열의 요소[0] 값에 시간값을 넣는다.그렇지 않다면 해당 요소[0]은 그대로, 요소[1]은 -1 한 값(피자를 하나 먹었으므로!) 을 큐의 맨 뒤에 넣는다.   코드package baekjoon._15235;import java.io.BufferedReader;import java...
·Baekjoon
문제     풀이자료구조는 큐를 사용하는 문제이다. 나는 back 때문에 Queue가 아닌 LinkedList로 문제를 풀었다. Queue는 FIFO(First In First Out) 데이터 구조의 인터페이스로, Java Collection Framework의 일부이다. 반면 LinkedList는 구체적인 클래스로, List와 Deque 인터페이스를 모두 구현한다. 여기서 Deque는 양방향 큐를 의미하며, Queue 인터페이스를 확장하고 있다. Queue 인터페이스의 주요 메소드는 다음과 같다.boolean add(E e): 큐에 요소를 추가한다. 큐가 꽉 찼을 경우 예외를 던진다.E remove(): 큐에서 요소를 제거하고 반환한다. 큐가 비어있을 경우 예외를 던진다.E poll(): 큐에서 요소를..
coding-orange
'Java' 태그의 글 목록