반응형

2023/02 8

[이펙티브 자바] Item1 생성자 대신 정적 팩터리 메서드를 고려하라

클라이언트가 클래스의 인스턴스를 얻는 방법은 2가지다. 1. 클래스의 Public 생성자 2. 정적 팩터리 메서드 (static factory method) 정적 팩터리 메서드란 new 키워드를 직접 사용하는 것이 아니라 정적 팩터리 메서드 내부에서 new 를 사용해 객체를 생성한 다음 그 객체를 반환해주는 것을 말한다. 생성자와 비교했을 때 정적 팩터리 메서드의 장점은? 1. 이름을 가질 수 있다. - 생성자 사용 방식 class Person { private String name; private String addr; // 생성자1 public Person (String name, String addr) { this.name = name; this.addr = addr; } // 생성자2 public..

Java 2023.02.23

[프로그래머스] 문자열 내 마음대로 정렬하기 - Java(자바)

문제설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 출력 형식 원래의 비밀지도를 해독하여 '#', 공백으로 구성된..

프로그래머스 2023.02.17

[프로그래머스] 1차 비밀지도 - Java(자바)

문제설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 1. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 3. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 4. 암호화된 ..

프로그래머스 2023.02.10

[이펙티브 자바] Item 64 객체는 인터페이스를 사용해 참조하라

예제 // 인터페이스 참조한 예 Set set = new LinkedHashSet(); // 그렇지 않은 예 LinkedHashSet set = new LinkedHashSet(); LinkedHashSet 은 Set 인터페이스를 상속받고 있다. 위의 예제에서는 LinkedHashSet을 Set 타입으로 업캐스팅하여 사용하고 있다. ※ 주의: 업캐스팅으로 인해 set은 Set 타입이므로 LinkedHashSet 에만 존재하는 기능을 사용할 수 없게 됨 WHY?? 왜 인터페이스를 참조하라는 걸까? ( 더 나은 성능을 위해 ) 원래의 타입을 변경해야 하는 경우 예제 // 인터페이스를 참조한 예 // 구현체(LinkedHashSet -> HashSet)를 변경해도 코드는 변경되지 않음 Set set = new..

Java 2023.02.07

[프로그래머스] 삼총사 - Java(자바)

문제설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 제한사항 3 ≤ number의 길이 ≤ 13 -1,000 ≤ number의 각 원소 ≤ 1,000 서로 다른 학생의 정수 번호가 같을 수 있습니다. 입출력 예 d 배열 result [..

프로그래머스 2023.02.06

[Java] 조합 알고리즘 java 코드로 구현하기

조합이란? 배열에서 몇개를 중복없이 추출하는 것을 말한다. 예를 들면, 배열 int[] arr = {1, 2, 3, 4} 에서 2개의 요소만 중복없이 추출하고 싶은 경우 [1, 2], [2, 3], [3, 4] [1, 3], [2, 4] [1, 4] 총 6개가 출력되어야 한다. 조합을 구현할때 백트래킹과 재귀함수 방법이 있다고 한다. 나는 너무 헷갈려서 우선 가장 간단한 예제로 조합을 구현해보았고, 나중에 프로그래머스에서 문제 풀 때 조건만 다르게 해서 적용해 볼 예정이다. 코드 class CombinationExample { public static void main(String[] args) { int[] arr = {1,2,3,4}; getCombination(arr); } public static..

Java 2023.02.06

[Docker] 엘라스틱서치 설치하기

1. Docker에 엘라스틱서치 image 설치 $ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.9.1 2. image 설치 확인 $ docker images 3. 컨테이너 구동 $ docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.9.1 4. 컨테이너 구동 여부 확인 $ docker ps 5. 컨테이너 재 실행 // docker container restart {{컨테이너 이름}} docker container restart elasticse..

docker 2023.02.05
반응형