[문제] https://www.acmicpc.net/problem/2170 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net [풀이] 이 문제의 핵심은 아래 두 가지로 요약할 수 있다. 1. 선을 좌표 기준으로 정렬해야된다. (우선순위 큐 혹은 배열 정렬) 2. 선이 포함되는 경우 조건문으로 처리 👎 배열에 선을 그은 곳은 1로 채워 총 1의 수를 구할 경우, 배열 크기를 2조로 지정해야되기 때문에 다른 방법을 생각해야한다. 문제에서 주어진 입력된 선을 형광펜으로 표시하면 이렇다..
java
인스턴스화를 막는 이유 1. 불필요한 인스턴스 생성 방지 어떤 클래스가 여러 번 인스턴스화되어도 동일한 객체를 반환해야 할 때가 있다. 이런 경우, 생성자를 직접 호출하지 못하게 하고 미리 생성된 인스턴스를 제공함으로써 불필요한 객체 생성을 방지해 메모리와 성능을 최적화할 수 있다. 2. 상태의 불변성 유지 비밀번호 해싱 라이브러리같이 해싱된 비밀번호를 변경하지 못하도록 하기 위해 인스턴스화를 막을 수 있다. 3. 싱글톤 패턴 싱글톤은 어떤 클래스의 인스턴스가 오직 하나만 존재해야 하는 경우 사용된다. 이 경우, 클래스의 생성자를 private로 만들어 외부에서 인스턴스를 생성하지 못하게 하고, 정적 메서드나 정적 변수를 사용하여 하나의 인스턴스를 관리한다. 4. 상속 제어 어떤 클래스를 다른 클래스에서..
싱글톤(Singleton) 패턴 소프트웨어 디자인 패턴에서 싱글톤 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다. 싱글톤 패턴은 간단히 객체의 인스턴스를 한 개만 생성되게 하는 패턴이다. public static final 필드 방식의 싱글톤 public class Elvis { public static final Elvis INSTANCE = new Elvis(); priva..
정적 팩토리와 생성자는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 제약이 있다. 점층적 생성자 패턴 public class NutritionFacts { private final int servingSize;// 필수 private final int servings;// 필수 private final int calories;// 선택 private final int fat;// 선택 private final int sodium;// 선택 private final int carbohydrate;// 선택 public NutritionFacts(int servingSize, int servings) { this(servingSize, servings, 0); } public NutritionFact..
클래스의 인스턴스를 얻을 때 일반적으로 public 생성자를 사용한다. 하지만 개발자는 클래스에 생성자 대신(혹은 함께) 정적 팩토리 메소드를 제공해 클래스의 인스턴스를 반환할 수 있다. public class Person { private String name; private int age; // 생성자를 통한 인스턴스 생성 private Person(String name, int age) { this.name = name; this.age = age; } // 정적 팩토리 메소드: 이름과 나이를 받아 Person 객체 생성 public static Person createPerson(String name, int age) { return new Person(name, age); } // 정적 팩토리 ..
1️⃣ HashTable 자료구조에 대해 알아보자 (Key, Value) 구조로 데이터를 저장하는 자료구조로, 빠르게 데이터를 검색할 수 있다. 각각의 Key 값에 해시함수를 적용해 고유 index를 생성하고, 이 index를 활용해 값을 저장하고 검색한다. 평균 O(1)의 시간복잡도를 갖지만 충돌이 일어나 연속적으로 검색해야 되는 경우 O(n)까지 증가할 수 있다. 💥 해시값이 충돌하는 경우 서로 다른 Key 값에 해시함수를 적용한 값이 동일한 경우에는 어떻게 할까? 1. 분리연결법(Seperate Chaining) 동일한 버킷일 경우 추가 메모리를 사용해 데이터를 연결해 관리한다. 분리연결법의 경우 해시 테이블의 확장이 필요 없고, 구현이 간단하지만 데이터의 수가 많아지면 동일한 버킷에 연결되는 데이..