전체 글

배움을 기록합니다.
설명       풀이 이 문제를 통해 이분 검색 (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..
설명       풀이 이 문제는 HashMap을 사용하면 O(n)으로 풀 수 있지만, 정렬로도 이 문제를 풀 수 있음을 보여주기 위해 정렬을 사용했다.정렬을 사용하면 O(nlog(n))이 된다. 로직은 다음과 같다.정답 문자열을 "U"로 초기화한다.오름차순 정렬을 한다. java.util.Arrays 클래스의 sort 메소드를 이용한다.0번 인덱스부터 (배열 길이의 - 1) 번 인덱스까지 반복문을 돈다.현재 배열값과 현재 배열값의 다음값이 같다면 중복된 것이므로 "D"를 바로 리턴한다.정답 문자열을 리턴한다.    코드 package inflearn._6_5;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOExcep..
설명       풀이 자료구조는 int 배열을 사용하며 알고리즘은 정렬을 활용한다.  로직은 다음과 같다.캐시 크기만큼의 int 배열을 생성한다.작업이 들어있는 배열을 돈다.초기 int형 변수 pos를 -1로 둔다. 이 변수는 현재 수가 캐시에 존재하는지 확인할 수 있는 변수이다.캐시 배열을 돌면서 현재 수가 캐시 배열에 존재하는지 확인한다.존재한다면 해당 인덱스 변호를 pos 변수에 저장한다.pos가 -1 이면 캐시에 현재 값이 존재하지 않는다는 뜻이다. 즉, miss 인 경우이다.배열의 맨 뒤부터 1번 인덱스까지 1 감소시키며 반복문을 돈다.오른쪽으로 수를 하나씩 민다. 캐시 배열의 i-1 번째 인덱스의 값을 캐시 배열의 i 번째 인덱스의 값에 넣는다.pos가 -1이 아니면 캐시에 현재 값이 존재한다..
·Jenkins
이전 글을 통해 로컬에 Tomcat을 설치하고 포트 번호 변경, 사용자 등록 과정을 거쳤다.이제 로컬에서 실행중인 Tomcat 서버에서, Jenkins로 빌드된 war 파일을 배포해 볼 것이다.로컬 Tomcat 서버가 8088 포트에서 실행중이어야 한다.   1. 지금 빌드 버튼을 누르면 성공한다.    2. Console Output에서 다음과 같은 내용들을 볼 수 있다.   3. 로컬의 tomcat 폴더로 가면 webapps, bin, conf, log 등의 폴더가 보인다.    4. webapps 폴더로 이동하면 hello-world.war가 보인다.Jenkins에서 만들어진 hello-world.war 파일이 로컬의 Tomcat 서버로 복사된 것이다.   5. hello-world.war가 배포된..
·Jenkins
이전 글에서 발생한 오류를 해결하기 위해 작성한 글이다.로컬에서 8088 포트로 Tomcat 을 실행시키기 위한 과정이다.   1. Tomcat 9 버전을 다운받는다.https://tomcat.apache.org/download-90.cgi 에서 다운받았다.나는 맥북 M1을 사용하기 때문에 tar.gz 를 다운받았다.   2. 실행 .sh 파일 권한 주기 다운받은 zip 파일의 압축을 풀고 폴더를 클릭하여 맥북 기준 command + option + c 로 폴더 경로를 복사하고, /bin을 붙여 Tomcat 서버를 실행할 수 있는 파일들이 있는 경로로 이동한다. cd /Users/kangminseo/Downloads/apache-tomcat-9.0.88/bin  Tomcat 서버를 시작하고 종료시키기 위..
·Jenkins
이번에는 Jenkins를 이용해 로컬 Tomcat 서버에 배포를 하는 방법을 알아볼 것이다.    1. 플러그인에서 deploy to container를 설치하자.[Jenkins 관리] - [Plugins] - [available] 를 클릭하고 deploy 를 검색하고 deploy to container가 설치되어 있지 않다면 설치한다. 이 플러그인이 있어야 빌드한 war 파일을 복사해서 tomcat에 배포할 수 있다.    2. 새로운 Item을 생성한다.이름은 My-Third-Project로 하고, Maven project 을 선택했다.    3. 설명 작성과 소스코드 관리Item에 대한 간단한 설명을 작성했고, 소스코드 관리는 Git을 체크하고 링크를 작성했다. 작성한 링크의 repository는 ..
coding-orange
코딩하는 오렌지