Java 35

@Builder.Default

warning: @Builder will ignore the initializing expression entirely.프로젝트를 진행하던 도중 위와같은 경고를 마주치게 되었다 (에러는 아니다). 그리고 이어서 다음 조언들이 적혀 있었다.If you want the initializing expression to serve as default, add @Builder.Default. If it is not supposed to be settable during building, make the field final.@Builder 어노테이션의 Default 옵션을 사용하라는 말인데, 이를 이해하기 위해서 @Builder 어노테이션의 성질을 이해할 필요가 있었다. 생성자를 사용할 때에는 객체를 생성할 때 ..

Builder 패턴과 @Builder 어노테이션

프로젝트를 진행하면서 Builder 패턴의 유용함을 더욱 체감 중이다.예를 들어 다음과 같은 클래스 Person이 있다고 하자.public class Person { private String name; private int age; private String address; private String phoneNumber; private String email; private String job;}  Builder 패턴을 사용하지 않았을 경우 필요에 따라 다음과 같이 수많은 생성자들이 있어야 한다.public Person(String name, int age) { this.name = name; this.age = age;}public Person(String..

최대점수 구하기 (냅색 알고리즘)

import java.util.Scanner; public class Main06 { //냅색 알고리즘 public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] dynamic = new int[m+1]; for(int i=0; i=time; j--) { //앞에서부터 돌면 중복 //뒤에서부터 돌아야 중복 회피 dynamic[j] = Math.max(dynamic[j], dynamic[j-time]+score); } } System.out.println(dynamic[m]); } }

Tree, BinaryTree

트리 (Tree) Tree 구조는 계층적인 구조를 표현할 수 있는 자료구조이다. Tree 구조는 루트 노드에서 시작하여 여러개의 하위 노드들이 연결된 형태로 구성되며, 각 노드는 각자의 하위 노드들을 가질 수 있다. Java에서는 Tree 구조를 구현하기 위해 다음의 인터페이스와 클래스들을 사용한다. 아래 인터페이스와 클래스들은 중복값을 허용하지 않는다. 사용 인터페이스 java.util.Set Tree 구조를 구현하기 위한 인터페이스로, 이 인터페이스를 implements 하는 클래스들은 모두 Tree 구조를 갖는다. java.util.SortedSet Set 인터페이스를 상속받으며, 정렬된 Tree 구조를 표현하기 위한 인터페이스이다. 사용 클래스 java.util.TreeSet SortedSet 인..

PriorityQueue

PriorityQueue (우선순위 큐)는 우선순위에 따라 정리되어 있으며, 우선순위가 가장 높은 요소에 먼저 접근할 수 있는 자료구조이다. PriorityQueue 의 구현을 위해서는 Heap 이 사용된다. PriorityQueue는 기본적으로 Min Heap을 사용한다. 가장 높은 우선순위를 갖는 요소는 root 노드에 위치하게 된다. 이에 따른 요소의 추가와 삭제 과정은 다음과 같다. 추가 과정 새로운 요소를 Heap의 마지막 노드에 위치시킨다. 부모노드와 비교하며 적절한 위치에 배치한다. 삭제 과정 우선순위가 제일 높은 요소를 뽑는다. (root 노드) 이후 Heap의 마지막 노드를 root 노드의 위치로 이동시킨다. 자식노드와 비교하며 적절한 위치에 배치한다. PriorityQueue 클래스 메..

[백준 1021] 회전하는 큐

https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net Deque 자료구조를 이용하면 풀기 수월하다. 연산 횟수를 세는 경우는 오른쪽으로 한 칸씩 미는 경우와 왼쪽으로 한 칸씩 미는 경우 두 가지이다. 한 칸씩 이동하는 이유는 Deque의 첫 번째 값을 뽑아내는 1번 연산을 하기 위함이다. 찾고자 하는 숫자의 처음 Deque에서의 위치가 주어지면 두 가지 경우로 나뉜다. 오른쪽으로 한 칸씩 밀어가며 숫자를 첫 번째 값으로 위치시킬 것인지 왼쪽으로 ..

[Solved]/BOJ 2023.03.31

== 와 .equals() 차이

[백준 1991] 트리순회 [백준 1991] 트리순회 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 eggmomo.tistory.com 저번에 풀었던 [백준 1991] 트리순회 문제를 풀면서 궁금증이 생겼다. BufferedReader로 받아온 String을 char 자료형으로 변환하는 것이 귀찮아서 Node 클래스의 name 필드 자료형을 String으로 지정하여 풀었는데, static void addNode(Node node, String head, String left, String right) { ..