본문 바로가기

Java14

[TIL] QueryDsl 설정법(SpringBoot 3.0이상) plugins { id 'java' id 'org.springframework.boot' version '3.1.5' id 'io.spring.dependency-management' version '1.1.3' } group = 'study' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementatio.. 2023. 11. 15.
[JAVA] 추상클래스 (abstract) / 인터페이스 (interface) ■ 추상클래스 (abstract) - 추상 메서드를 선언하여 상속을 통해 자식 클래스에서 완성하도록 유도하는 클래스 "미완성 설계도" - 클래스를 abstract로 지정하면 new를 통해 객체 생성 X - interface의 메소드와 다르게 구현 부분 X - abstract로 선언한 메소드를 반드시 자식 클래스에서 구현해야 함(오버라이딩) - 다중 상속 X ■ Code abstract class 클래스A{ public abstract void 메서드(); } class classB extends classA{ @Override public void 메서드(){ ... //구현 } } ■ 인터페이스 (interface) - 추상 클래스와는 다르게 구현부가 있는 일반 메서드, 일반 변수 멤버 등을 가질 수 .. 2023. 8. 7.
[자료구조] 이진 트리 (Binary Tree) Binary Tree (이진 트리) 각 노드가 최대 2개의 자식을 갖는 트리 ■ 정의 - 루트: 트리의 가장 윗부분에 위치하는 노드 - 리프: 트리의 가장 아랫부분에 위치하는 노드 - 안쪽 노드: 리프를 제외한 나머지 노드(루트 포함) - 자식: 어떤 노드에서 가지로 연결된 아래쪽 노드 - 부모: 어떤 노드에서 가지로 연결된 바로 위쪽 노드 - 형제: 부모가 같은 노드 - 레벨: 루트로부터 얼마나 떨어져 있는지를 나타낸 값 - 차수: 노드가 갖는 자식의 수 - 높이: 루트에서 가장 멀리 떨어진 리프까지의 거리 - 서브트리: 트리 안에서 다시 어떤 노드를 루트로 정하고 그 자손으로 이루어진 트리 Binary Tree(이진 트리) 순회 방법 ■ 정의 ● preorder (전위 순회) : root Node -.. 2023. 3. 29.
[자료구조] 연결리스트 (LinkedList) / 배열리스트 (ArrayList) LinkedList (연결리스트) ■ 정의 - LinkedList (연결리스트)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조 - 각 노드의 포인터 변수는 다음 노드의 데이터의 주소를 값을 가지고 각 포인터 변수의 주소도 따로 존재 ■ 생성자 - LinkedList list = new LinkedList(); ■ Code 더보기 import java.util.Comparator; public class LinkedList { class Node { private E data; private Node next; Node(E data, Node next) { this.data = data; this.next = next; } } private Node hea.. 2023. 3. 28.
[JAVA] 에라토스테네스의 체 에라토스테네스의 체 ■ 정의 소수를 찾는 방법 중 하나로, '소수가 되는 수의 배수를 지우면 남은 건 소수가 된다' 라는 알고리즘 소수가 무엇인지 찾을 필요가 없으며, 2부터 자기 자신을 제외한 배수가 되는 것을 지움 ​ - 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97이 남는데, 이것이 100 이하의 소수이다. - 7까지 찾는 이유는 8, 9, 10은 2와 3의 배수이므로 이미 지워진 상태이고, √100 < 11이기 때문이다. ■ 사용 예 (백준 No.17103) 17103번: 골드바흐 파티션 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이.. 2023. 3. 20.
[JAVA] 유클리드 호제법(GCD / LCD) GCD (최대 공약수) ■ 정의 1. 22 x 8 크기의 직사각형을 짧은 변(8)을 한 변으로 하는 정사각형으로 분할 2. 정사각형을 제외한 8 x 6 직사각형을 짧은 변(6)을 한변으로 하는 정사각형으로 분할 3. 남은 6 x 2 직사각형을 2 x 2 크기의 정사각형 3개로 분할 ☞ 마지막까지 나누어 떨어진 정사각형의 한 변의 길이가 최대 공약수가 됨 ■ Code import java.util.Scanner; public class EuclidGCD { static int gcd(int x, int y){ if(y == 0) return x; else return gcd(y, x % y); } public static void main(String[] args){ Scanner sc = new Scan.. 2023. 3. 15.
[자료구조] 덱(Dequeue, Double-ended Queue) 덱 (Dequeue, Double-ended Queue) ■ 정의 - Dequeue(덱)은 양쪽에서 넣고 빼고가 가능한 큐 - 어떤 쪽으로 입력하고 어떤 쪽으로 출력하느냐에 따라 스택, 큐 모두 사용 가능 - 스케줄링이 복잡해질수록 큐와 스택보다 효율이 잘 나옴 ■ 메소드 Deque dq = new LinkedList(); 메소드 의미 addFirst(int item) 덱의 앞 쪽에 item 삽입, 용량 초과 시 예외 발생 offerFirst(int item) 덱의 앞 쪽에 item 삽입, 용량 초과 시 false 리턴 addLast(int item) 덱의 뒤 쪽에 item 삽입, 용량 초과 시 예외 발생 offerLast(int item) 덱의 뒤 쪽에 item 삽입, 용량 초과 시 false 리턴 r.. 2023. 2. 24.
[자료구조] 스택(Stack) / 큐(Queue) 스택(Stack) ■ 정의 - 데이터를 일시적으로 쌓아 놓는 자료구조 - 데이터의 입력과 출력 순서는 후입선출 (LIFO: Last In First Out) ■ 메소드 Stack s = new Stack(); Stack s = new Stack(int capacity); // 스택의 capacity 결정 메소드 의미 push(int item) 스택에 데이터를 저장 pop() 스택의 꼭대기에 있는 데이터를 제거하고, 그 값을 반환 isFull() 스택이 empty 상태인지 확인 isEmpty() 스택이 full 상태인지 확인 clear() 스택의 모든 요소를 삭제 peek() 스택의 가장 최상위(마지막)에 위치한 데이터 출력 capacity() 스택의 용량 확인 (스택 전체 크기) size() 스택의 크기.. 2023. 2. 22.
[JAVA] contains() / replace() contains() ■ 정의 - 문자열이 특정 문자열을 포함하고 있는지 확인한다. - boolean형이므로 포함하고 있으면 true를, 아니면 false를 반환한다. - 대·소문자, 공백을 구분한다. ■ 사용 예 public class contains { public static void main(String[] args) { // TODO Auto-generated method stub String str = "my name is jaein"; System.out.println(str.contains(" my"));//false System.out.println(str.contains("name")); //true System.out.println(str.contains("is")); //true Sy.. 2023. 2. 7.
[JAVA] StringBuilder ■ 정의 - StringBuilder 클래스의 인스턴스는 그 값을 변경할 수 있고, 추가할 수 있는 가변객체(mutable) => 문자열을 바로 추가할 수 있으므로, 공간의 낭비도 없으며 속도도 매우 빨라짐. ​ - 동기화 되어있지 않다. => StringBuffer에 비해 가벼움. 특별한 이유가 없다면 StringBuilder를 사용하는 것이 일반적. ■ 생성자 StringBuilder sb = new StringBuilder(); // 객체선언 StringBuilder sb = new StringBuilder("str"); // 문자열을 바로 넣을 수도 있음 ■ 메소드 종류 메소드 의미 반환형 append() 인수로 전달된 값을 문자열로 변환한 후, 해당 문자열의 마지막에 추가 StringBuilde.. 2023. 2. 6.