전체 글 188

[Java] TreeSet 클래스

TreeSet은 이진 검색 트리 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스이다. 이진 검색 트리는 정렬, 검색, 범위 검색에 높은 성능을 보이는 자료구조로 TreeSet은 '레드-블랙 트리'로 구현되어 있다. Set 인터페이스를 구현했기 때문에 중복된 데이터의 저장을 허용하지 않고, 정렬된 위치에 저장하므로 저장 순서를 유지하지도 않는다. 2021.04.28 - [Algorithm] - [Algorithm] 이진검색트리 [Algorithm] 이진검색트리 검색트리 개체의 레코드를 저장하고 검색하기 위한 트리 형태의 자료구조 *레코드 : 개체에 대한 모든 정보를 포함한다. 어떤 사람이 레코드라면, 직장, 주민번호, 이름, 집 주소 등이 포함될 수 youngssse.tistory.com 주요 메서드 b..

Java 2021.05.26

[Algorithm] 전보

문제 어떤 나라에는 N개의 도시가 있다. 그리고 각 도시는 보내고자 하는 메시지가 있는 경우, 다른 도시로 전보를 보내서 다른 도시로 해당 메시지를 전송할 수 있다. 하지만 X라는 도시에서 Y라는 도시로 전보를 보내고자 하면, 도시 X에서 Y로 향하는 통로가 설치되어 있어야 한다. X->Y가 있지만 Y->X가 없는 경우 Y에서 X로 메시지를 보낼 수 없다. 어느날 C라는 도시에서 위급 상황이 발생했다. 그래서 최대한 많은 도시로 메시지를 보내고자 한다. 메시지는 도시 C에서 출발하여 각 도시 사이에 설치된 통로를 거쳐 최대한 많이 퍼져나갈 것이다. 각 도시의 번호와 통로가 설치되어 있는 정보가 주어졌을 때, 도시 C에서 보낸 메시지를 받게 되는 도시의 개수는 총 몇 개이며 도시들이 모두 메시지를 받는데까..

Algorithm 2021.05.25

[Java] Comparator와 Comparable

Comparator와 Comparable은 모두 인터페이스로 컬렉션을 정렬하는데 필요한 메서드를 정의하고 있다. Comparable을 구현하고 있는 클래스들은 같은 타입의 인스턴스끼리 서로 비교할 수 있는 클래스들이다. 기본적으로 오름차순으로 정렬되도록 구현되어 있다. 인터페이스 소스 코드 public interface Comparator { int compare(Object o1, Object o2); boolean equals(Object obj); } public interface Comparable { public int compareTo(Object o); } Comparator는 compare 메서드와 equals 메서드를 정의하고 있지만, equals 메서드는 모든 클래스가 가지고 있는 공통..

Java 2021.05.25

[Java] Arrays 클래스

Arrays 클래스는 배열을 다루는데 유용한 메서드가 정의되어 있다. static 클래스로 인스턴스 생성하지 않아도 사용할 수 있다. 배열의 복사 배열을 복사하는 메서드. copyOf(Object[] arr) : 배열 전체를 복사한다. copyOf(Object[] arr, int size) : 배열을 size만큼 복사한다. copyOfRange(Object[] arr, int from, int to) : from부터 to 이전까지 (to는 미포함) 배열 채우기 fill(Object[] o, Object value) : 주어진 배열을 value로 채운다. (배열 타입에 주의) setAll(Object[] o, Function lambda) : 람다식이 반환한 결과 값으로 배열을 채운다. int[] arr ..

Java 2021.05.24

[Java] LinkedList

배열은 구조가 간단해 사용하기 쉽고 데이터를 빠르게 읽어올 수 있지만, 크기를 변경할 수 없고, 순차적이지 않은 데이터의 추가나 삭제에 시간이 많이 걸린다. 이런 단점을 보완하기 위해 Linked List라는 자료구조를 사용한다. 배열은 특정 주소부터 연속적으로 값을 저장한다. (저장된 객체의 타입의 사이즈만큼 간격) Linked List는 하나의 노드에서 값과 다음 노드의 주소 값을 갖는다. 연속적으로 두지 않아도 다음 노드를 주소로 참조하여 사용할 수 있다. (단방향이지만, Double Linked List는 이전 노드의 주소도 갖는 양방향) 메서드 boolean add(Object o) 지정된 객체를 끝에 추가, 성공하면 true. void add(int index, Object element) 지..

Java 2021.05.22

[Algorithm] 미래 도시

문제 방문 판매원 A는 많은 회사가 모여 있는 공중 미래 도시에 있다. 공중 미래 도시는 1번부터 N번까지의 회사가 있는데 특정 회사끼리는 도로를 통해 연결되어 있다. 방문 판매원 A는 현재 1번회사에 위치해 있으며, X번 회사에 방문해 물건을 판매하고자 한다. 공중 미래 도시에서 특정 회사에 도착하기 위한 방법은 회사끼리 연결되어 있는 도로를 이용하는 방법이 유일하다. 또한 연결된 2개의 회사는 양방향으로 이동할 수 있다. 공중 미래 도시에서의 도로는 마하의 속도로 사람을 이동시켜주기 때문에 특정 회사와 다른 회사가 도로로 연결되어 있다면, 정확히 1만큼의 시간으로 이동할 수 있다. 또한 오늘 방문 판매원 A는 기대하던 소개팅에도 참석하고자 한다. 소개팅의 상대는 K번 회사에 존재한다. 방문 판매원 A..

Algorithm 2021.05.22

[Java] ArrayList

List 인터페이스를 구현한 클래스 데이터의 저장순서가 유지되고 중복을 허용한다. 메서드 boolean add(Object o) : ArrayList의 마지막에 객체를 추가한다. 성공하면 true 반환 void add(int index, Object element) : 지정된 위치 (index)에 객체를 저장한다. void clear() : 완전히 비운다. Object clone() : 복제한다. boolean contains(Object o) : 지정된 객체가 포함되어 있는지 확인한다. Object get(int index) : 지정된 위치에 저장된 객체를 가져온다. int indexOf(Object o) : 지정된 객체가 있는 위치를 반환한다. boolean isEmpty() : 비어있는지 확인한다...

Java 2021.05.21

[Algorithm] 효율적인 화폐 구성

문제 N가지 종류의 화폐가 있다. 이 화폐들의 개수를 최소한으로 이용해서 그 가치의 합이 M원이 되도록 하려고 한다. 이때 각 화폐는 몇 개라도 사용할 수 있으며, 사용한 화폐의 구성은 같지만 순서만 다른 것은 같은 경우로 구분한다. 예를 들어 2원, 3원 단위의 화폐가 있을 때는 15원을 만들기 위해 3원을 5개 사용하는 것이 가장 최소한의 화폐 개수이다. 입력 조건 첫째 줄에 N, M이 주어진다. (1

Algorithm 2021.05.21

[Java] java.time 패키지

기존의 Date와 Calendar 클래스의 단점을 보완하여 JDK 1.8부터 java.time 패키지가 추가되었다. String 클래스와 같이 불변(immutable)한 특징을 갖는다. 핵심 클래스 LocalDate 날짜를 표현하는 클래스. LocalTime 시간을 표현하는 클래스. LocalDateTime 날짜와 시간을 표현하는 클래스. ZonedDateTime 날짜와 시간에 시간대까지 표현하는 클래스. Period 날짜간의 차이를 표현하기 위한 클래스 Duration 시간의 차이를 표현하기 위한 클래스 객체 생성 LocalDate date = LocalDate.now(); LocalTime time = LocalTime.now(); LocalDate date1 = LocalDate.of(2015, 1..

Java 2021.05.20

[Algorithm] 바닥 공사

문제 가로의 길이 N, 세로의 길이가 2인 직사각형 형태의 얇은 바닥이 있다. 태일이는 이 얇은 바닥을 1 X 2의 덮개, 2 X 1의 덮개, 2 X 2의 덮개를 이용해 채우고자 한다. 이때 바닥을 채우는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 2 X 3 크기의 바닥을 채우는 경우의 수는 5가지이다. 입력 조건 첫째 줄에 N이 주어진다. 출력 조건 2 X N 크기의 바닥을 채우는 방법의 수를 796,796으로 나눈 나머지를 출력한다. 풀이 N = 1일 때, 2 X 1 1가지 N = 2일 때, (2 X 1) X 2, (1 X 2) X 2, (2 X 2) 3가지 N = 3일 때, (2 X 1) + (2 X 2), (2 X 2) + (2 X 1), (2 X 1) X 3, (2 X 1) + ..

Algorithm 2021.05.20
반응형