[Java] 18

TreeSet, Red-Black Tree

Set interface를 구현한 클래스. BinarySearchTree(이진탐색트리) 구조로 이루어져 있으며, 그 중에서도 성능을 향상시킨 Red-Black Tree로 구현되어있다. 일반적인 이진탐색트리의 경우, 입력값이 분산되어 들어오지 않고 한 쪽에 치우쳐서, 편향되어서 들어온다면 효율적이지 못하게 된다. 이 문제를 보완한 방식이 레드-블랙 트리이다. 레드-블랙 트리는 부모노드를 기준으로 왼쪽 오른쪽으로 배치해 편향되지 않은 구조가 되도록 한다. TreeSet 생성 TreeSet 생성 TreeSet treeSet = new TreeSet(); TreeSet 생성, 타입 파라미터 생략 TreeSet treeSet = new TreeSet(); treeSet_1의 값을 갖는 TreeSet 생성 Tree..

HashMap

HashMap은 Map interface를 구현한 대표적인 Map Collection(데이터의 집합)이다. Map은 Key와 Value로 구성된 Entry 객체를 저장하는 구조의 자료구조이고, 이 때 Key와 Value는 둘 다 객체이다. Value는 중복저장이 가능하지만 Key는 중복저장이 불가능하다. 동일한 키로 저장 시 기존값을 삭제하고 해당 Key를 갖는 새로운 값으로 저장된다. HashMap 생성 HashMap 생성 HashMap map = new HashMap(); HashMap 생성 시, 타입 파라미터 생략 HashMap map = new HashMap(); HashMap 생성 시, HashMap map_1의 모든 값을 가진 HashMap 생성 HashMap map = new HashMap(..

소수 (에라토스테네스의 체)

자연수 N을 입력받고, 1부터 N까지의 소수의개수를 출력해야 할 경우 편입했을 당시 학교 온라인저지에서 풀었던 코드를 발견했는데 각각 숫자에 대해 2부터 x-1까지 반복문을 돌려 나머지==0 인 경우가 있으면 소수가 아님을 판별하는 brute force 방식, 전체 탐색 방식의 코드였다. O(N)의 시간복잡도를 갖는 비효율적인 방법이지만 1학년 초반의 수업이었음을 감안하여 Time Limit Exceeded가 발생하지 않는 테스트케이스들을 주셨던게 아닐까 한다.. 다음 방법은 N의 약수들이 대칭을 이루고 있다는 성질을 이용한 방법으로, N=20일 때 약수는 1, 2, 4, 5, 10, 20 이고 1과 N을 제외하고, 4와 5는 4*5=20 으로 대칭 관계이기 때문에 굳이 5까지 판별할 필요가 없다는 점을..

String 클래스 메소드 정리

startsWith : 문자열이 지정한 문자로 시작하는지 (대소문자 구별) String string = "abcdea"; System.out.println(string.startsWith("a")); //true System.out.println(string.startsWith("b")); //false endsWith : 문자열이 지정한 문자로 끝나는지 (대소문자 구별) String string = "abcdea"; System.out.println(string.endsWith("a")); //true System.out.println(string.endsWith("b")); //false equals : 두 개의 String을 비교해서 같은지 String string = "abc"; System.ou..

StringBuilder, StringBuffer

문자열 이어붙이기 StringBuilder에는 연결하고자 하는 문자열을 넣어 붙일 수 있는 append()라는 메소드가 있다. 하지만 평소 문자열을 이어붙일 때 String a = "문자열을"; System.out.println(a); String a = a + "붙여보자"; String a = a; System.out.println(a); input output 문자열을 문자열을붙여보자 이런 간단한 방법을 사용했는데(혹은 concat 메소드) 왜 굳이 StringBuilder.append() 를 사용하는 것인지 궁금했고, 둘의 차이를 알아보았다. 메모리 할당과 해제 📢 And you know, object create always takes more time than other operations, …..

조합(Combination)

위 식을 재귀를 사용해 짜면, import java.util.Scanner; public class Main07 { int[][] temp = new int[35][35]; //숫자가 커지면 소요 시간이 기하급수적으로 커짐 // 이를 방지하기 위한 배열 public int Combination(int n, int r) { if(temp[n][r] > 0) return temp[n][r]; if(n==r || r==0) return 1; else return temp[n][r] = Combination(n-1, r-1) + Combination(n-1, r); } public static void main(String[] args) { // TODO Auto-generated method stub Main..

Java Programming Language

운영체제로부터 독립적 자바는 운영체제로부터, 플랫폼으로부터 독립적이기 때문에 프로그램의 변경 없이 다양한 환경에서 실행 가능하다. 이런 특징 덕분에 인터넷 환경에 적합하다. 이는 일종의 Emulator(다른 프로그램이나 장치를 모방하는 프로그램)인 JVM(자바 가상머신) 덕분에 가능한 것인데 자바 응용 프로그램은 HW가 아닌 JVM하고만 통신하고 JVM이 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 객체지향언어이다 객체지향언어의 하나이다. 즉, 상속, 캡슐화, 다형성 등의 특성을 갖추고 있다. 자동 메모리 관리 자바 응용 프로그램이 실행되면 Gabage Collector(가비지 컬렉터)가 자동적으로 메모리를 관리하주기 때문에 프로그래머 입장에서 따로 메모리를 ..

[Java] 2023.02.19

Java 배열 정렬 방법

배열의 정렬을 손쉽게 할 수 있는 방법에는 Arrays.sort가 있다. 오름차순 정렬은 다음과 같다. private void arraySort(){ int[] arr = new int[]{5,3,1,4,2}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // [1,2,3,4,5] } arr 혹은 arr.toString() 출력 시 ⇒ [I@2133c8f8 (배열의 주소값이 출력) Arrays.toString(arr) 출력 시 ⇒ [1, 2, 3 ,4 ,5] (배열 값 출력) 내림차순 정렬에는 Collections.reverseOrder() 를 사용하면 된다. private void arraySort(){ int[] arr = new int[..