![[java] 백준 1931번 문제(회의실 배정)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FxBHjd%2FbtsNcvd2nxW%2FAAAAAAAAAAAAAAAAAAAAAO3YahmHfdG_N0I4XdWyI0MnRtiFjp33PdrKmLPWei4S%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DgGJTwaiAlsRJmI0nXuHx3VTwYmI%253D)
원본 링크 : https://www.acmicpc.net/problem/1931문제설명 소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.StringTokenizer;public class Boj_1931{ // 회의 클래스 static class Meeting { int startTime; // 회의 시작시간 int endTime; // 회의 종료시간 public Meeting(int startTime, int endTime) { ..
![[java] 백준 1715번 문제(카드 정렬하기)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb3y7VC%2FbtsNamPOeFf%2FAAAAAAAAAAAAAAAAAAAAACPowy2sLAbpc0c8TvtfGyBaiAOA7oL9aMP0Wp6FDYbP%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D813htobJLzoiV98U9JUxVedJ9%252FQ%253D)
원본 링크 : https://www.acmicpc.net/problem/1715문제설명 소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.PriorityQueue;public class Boj_1715{ public static void main(String[] args) throws IOException { PriorityQueue pq = new PriorityQueue(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..
![[java] 백준 1744번 문제(수 묶기)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F49FC1%2FbtsNaEpa5bg%2FAAAAAAAAAAAAAAAAAAAAAG7dZxE9CJn93zdQS-ZEpZCifkuP5QO4htVE-jcC_b86%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3Dg4gkmusBwfLRhFcGMkduV3YbR6c%253D)
원본 링크 : https://www.acmicpc.net/problem/1744문제설명 소스코드방법 1import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Boj_1744{ public static void main(String[] args) throws IOException { List positives = new ArrayList(); // 2 이상 ..
![[JPA] @Builder.Default](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FCobk0%2FbtsM6iG3kXO%2FAAAAAAAAAAAAAAAAAAAAABuMH4Jf35af-wMpuMvMxJ680L9Y-4kBlUnC8oZV2qYd%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3Ddz3Z8O6rN7rJnAuugZfysLnAGUA%253D)
@Builder.Default는 Lombok의 @Builder와 함께 사용할 때, 기본값이 무시되지 않도록 유지시켜주는 어노테이션이다.일반적으로 @Builder를 사용하면, 필드에 직접 초기화한 값이 무시된다.@Builderpublic class Product { private String name; private int price = 1000;}위와 같이 price = 1000을 설정했더라도, Product.builder().build()를 실행하면 price는 0이 된다.즉, 기본값 1000이 무시되는 것. 해결 방법@Builderpublic class Product { private String name; @Builder.Default private int price = ..
![[JPA] 엔티티 클래스에서 @Builder 위치](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FDW2Rs%2FbtsM7gHZ67o%2FAAAAAAAAAAAAAAAAAAAAAFy61XLRW04ih3I4Qk-PcpJ7zvR9nHTwBjulZnYaW2lP%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DqzI1XajENCeNTU%252BPKZTasgpctR8%253D)
@Builder를 생성자 위에 두는 방식@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)@Entitypublic class Product extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String productNumber; private String name; private int price; @Builder(access = AccessLevel.PRIVATE) // 생성자 위에 빌더 public Product(String productNumber, String name, i..
![[JPA] 엔티티 공통 필드 상속(@MappedSuperclass)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F7aUcA%2FbtsM6Zmep1n%2FAAAAAAAAAAAAAAAAAAAAAJvK3O2YgGAdL7B9mr-8VuaUKcAKMDkrU9dfIg7W-d8r%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D4MHSfy3vT5xd8IF%252Bq0ybqZvEQoM%253D)
@MappedSuperclass엔티티마다 생성 날짜와 수정 날짜가 존재한다고 가정하면, 모든 엔티티에 해당 코드를 넣는 것은 비효율적이다.따라서 아래의 코드를 통해서 공통 필드를 상속받게 할 수 있다.@Getter@MappedSuperclass@EntityListeners(AuditingEntityListener.class)public abstract class BaseEntity { @CreatedDate private LocalDateTime createdDateTime; @LastModifiedDate private LocalDateTime modifiedDateTime;}공통 필드(생성일시, 수정일시)를 모든 엔티티에서 자동으로 사용하고 싶을 때이 BaseEntity를 상속받..
![[java] 백준 1300번 문제(K번째 수)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fxn3v8%2FbtsM4ZU5oSE%2FAAAAAAAAAAAAAAAAAAAAAD7NwG_ccymIxF1YpcdqPV6-QW4oI2es_O9fPRQqppFU%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DD8rgfUlwVODxBj8KF0w7jVKPpTM%253D)
원본 링크 : https://www.acmicpc.net/problem/1300문제설명 소스코드import java.io.*;public class Boj_1300{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine()); int K = Integer.par..
![[Spring] 스프링 컨테이너(IoC, DI 컨테이너)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbKs3H1%2FbtsM46zw4cc%2FAAAAAAAAAAAAAAAAAAAAALvRSBXY5xHxzpTo0wyevNOUBaxcEfrESFeEyhZgTn-z%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D9Dn4lIfdRrfR%252BvYCBDyh4Gv60Bs%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.SRP (Single Responsibility Principle) :하나의 클래스는 오직 하나의 책임만 가져야 한다.OCP (Open/Closed Principle) :소프트웨어 요소는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.LSP (Liskov Substitution Principle) :자식 클래스는 부모 클래스의 기능을 대체할 수 있어야 한다.ISP (Interface Segregation Principle) :특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.DIP (Dependency Inversion Principle) :구체화가 아닌 추상화에 의존해야 한다. OCP..