전체 글(131)
-
백준 - 9663 - N-Queen
www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net import java.util.*; /** * 백준 9663 */ public class N_Queen { private static int M = -1; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); M = N; sc.close(); //nqeen(N); nqeen2(N,new ArrayList..
2021.03.08 -
백준 - 10451 - 순열 사이클
www.acmicpc.net/problem/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net import java.util.*; public class 순열_사이클 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = Integer.parseInt(sc.nextLine()); List results = new ArrayList(..
2021.03.05 -
JAVA Collection - List 시간 복잡도
List 상속도 List는 ArrayList, LinkedList, Vector와 Vector를 상속받는 Stack이 있다 Stack은 따로 다루도록 한다. ArrayList 시간 복잡도 기능 시간복잡도 설명 add O(1) 마지막 배열 공간을 찾아 삽입해주면 된다.(get이 O(1)이기 때문) set O(n) 배열 중간에 공간을 만들기 위해 뒤에 있는 데이터들은 전부 뒤로 한칸씩 이동해야한다. remove O(n) 배열 중간에 요소를 삭제할 경우 삭제한 공간을 채우기 위해 뒤에 데이터를 앞으로 한칸씩 이동한다. get O(1) 배열 인덱스로 RAM에서 random access가 가능하기 때문에 성능이 좋다. (random access의 원리에 대해서는 잘 모른다... 아시는분 댓글좀 달아주세요) con..
2021.02.17 -
스프링데이터 JPA - 엔티티 식별자 직접할당시 save 성능 최적화(Persistable)
save의 기본동작은 식별자가 없으면 persist 식별자가 있으면 merge 이다. merge는 데이터베이스에서 식별자로 조회를 해본 후, 없으면 insert, 있으면 update이다.(비효율적이다) 그런데 식별자를 @GenerateValue로 자동 할당하지 않고 직접 할당하게되면 엔티티 save시, 무조건 식별자가 세팅되어 있음으로 merge를 하게된다. 이 문제를 엔티티에 Persistable 인터페이스를 구현함으로서 자동할당시 save와 동일한 성능을 유지할 수 있다. @Override public String getId() { return id; } @Override public boolean isNew() { return createdDate == null; } Persistable을 impl..
2021.02.08 -
스프링데이터 JPA - 컨트롤러에서 Pageable 파라미터로 받아 페이징하기
컨트롤러에서 Pageable을 파라미터로 받을 수 있다. 예) 1 2 3 4 5 @GetMapping("/members") public Page list(Pageable pageable) { Page page = memberRepository.findAll(pageable); return page; } Colored by Color Scripter cs 스프링 데이터는 pageable에 PageRequest 객체를 주입해준다. 요청 파라미터 예) /members?page=0&size=3&sort=id,desc&sort=username,desc page: 현재 페이지, 0부터 시작한다. size: 한 페이지에 노출할 데이터 건수 sort: 정렬 조건을 정의한다. 예) 정렬 속성,정렬 속성...(ASC | ..
2021.02.08 -
스프링데이터 JPA - 도메인 클래스 컨버터
도메인 클래스 컨버터 컨트롤러에서 파라미터로 엔티티의 ID를 받는 것 대신, 엔티티로 받아 객체를 바인딩 해주는 기능. 트랜잭션이 없는 범위에서 엔티티를 조회했음으로 엔티티를 변경하지 않고 조회용으로만 사용해야한다(변경해도 DB 반영 안됨) 도메인 클래스 컨버터도 레퍼지토리를 통해 엔티티 조회. //도메인 클래스 컨버터 적용 전 @RestController @RequiredArgsConstructor public class MemberController { private final MemberRepository memberRepository; @GetMapping("/members/{id}") public String findMember(@PathVariable("id") Long id) { Member..
2021.02.08