기록의 공유

잊지않기 위한 기록의 공유

Backend 178

코데 대비5 - Deque(덱),동적프로그래밍

1. Deque란?Deque(Double Ended Queue, 덱)는 양쪽 끝에서 삽입/삭제가 모두 가능한 자료구조입니다. [앞] ← [요소1] [요소2] [요소3] → [뒤] ↕ ↕ 삽입/삭제 삽입/삭제 Stack처럼도 사용 가능 (LIFO)Queue처럼도 사용 가능 (FIFO)양방향 큐로도 사용 가능 Deque deque = new ArrayDeque(); 동적 배열 기반Stack, Queue보다 빠름null 저장 불가양쪽끝 연산이 O(1) deque.addFirst(1);deque.push(1); // 앞쪽 삽입deque.addLast(1);deque.offer(1); // 뒤쪽 삽입deque.peekFirst();dequ..

코데 대비4 - 정규표현식(문자열검증), 우선순위큐,n진법

문자열검사방법1. Character 클래스 사용2. Stream API 사용3. 정규표현식 사용 문자열에 숫자가 있는지 검사Character 클래스 사용public static boolean hasDigit(String str) { for (char c : str.toCharArray()) { if (Character.isDigit(c)) { return true; } } return false;}Stream API를 사용public static boolean hasDigit(String str) { return str.chars().anyMatch(Character::isDigit);}정규표현식 사용public static boolea..

코데 대비3 - 조합,소수구하기,Collection 요소 삭제시 주의점

조합(Combination)순서를 고려하지 않고 n개 중에서 r개를 뽑는 경우의 수 예시: [1, 2, 3]에서 2개 뽑기결과: [1,2], [1,3], [2,3] (총 3개)❌ [2,1]은 [1,2]와 같은 조합이므로 제외! 순열과의 차이순열: [1,2]와 [2,1]은 다름조합: [1,2]와 [2,1]은 같음public class prac { static int[] array = {1, 2, 3}; static int n = array.length; static int r = 2; static int[] result = new int[r]; public static void main(String[] args) { combination(0,0); } p..

코테 대비 2 - 약수구하기, Collection 최대값 구하기, 순열,백트래킹

약수 구하기약수를 구하는 기본적인 방법public List getDivisors(int number) { ArrayList list = new ArrayList(); // 1부터 해당 숫자까지 반복한다. for (int i = 1; i 기본적인 방법 말고 최적화된 방법을 써야한다.import java.util.*;public class Solution { public List getDivisors(int n) { List divisors = new ArrayList(); // Math.sqrt(n)를 따로 변수에 저장해서 쓰던가 하지않으면 매번 계산해야해서 느리다. i * i가 속도도 빠름 fo..

코테 대비 1 - List,Map,Comparator,Stream API

List 관련 지식 + Stream API + Comparator + Comparable불변,가변 ListList integerList = List.of(1, 2, 3, 4, 5); // List.of()는 읽기만 가능하고 요소 추가,수정,삭제 불가List integerList2 = Arrays.asList(1, 2, 3, 4, 5); // Arrays.asList()는 읽기와 요소 수정 가능, 추가 삭제 불가하다.List goodIntegerList = new ArrayList(); // new ArrayList()로 생성된 리스트는 읽기와 요소의 수정,삭제,추가 전부 가능하다./** * Collection의 요소는 객체여야한다. * int[] 또한 하나의 배열 객체이다. int[]라는 참조타입변수에는..

가변 Collection , 불변 Collection

자바에서 리스트를 만들때 여러가지 방법을 사용할 수 있다.List.of()Arrays.asList()new ArrayList()하지만 각각의 차이를 모르고 쓰다가는 UnsupportedOperationException를 만나게 될것이다. 이번에 각각의 차이를 정리해보자. List List.of() - 완전 불변 리스트 (Java 9+) List.of()는 완전히 수정 불가능한 불변 리스트를 만든다.List fruits = List.of("apple", "banana", "orange");fruits.add("grape"); // UnsupportedOperationExceptionfruits.remove(0); // UnsupportedOperationException ..

Backend/Java 2025.12.09

Stream ( with claude )

Stream은 컬렉션, 배열 등의 데이터를 함수형으로 처리하는 API입니다 (Java 8+) Stream 생성 방법// 컬렉션에서List list = Arrays.asList("a", "b", "c");Stream stream = list.stream();// 배열에서String[] arr = {"a", "b", "c"};Stream stream = Arrays.stream(arr);// 직접 생성Stream stream = Stream.of("a", "b", "c");// 범위 생성IntStream range = IntStream.range(1, 5); // 1,2,3,4IntStream rangeClosed = IntStream.rangeClosed(1, 5); // 1,2,3,4,5 배열..

Backend/Java 2025.09.30

자바 정렬 ( with claude )

1. Comparable vs Comparator 언제 뭘 쓸까?Comparable 사용:학생을 학번순으로 정렬하는 것처럼, 객체의 "자연스러운" 기본 정렬 방식이 있을 때한 가지 정렬 방식만 필요할 때클래스를 직접 수정할 수 있을 때Comparator 사용:나이순, 이름순, 점수순 등 여러 가지 정렬 방식이 필요할 때String, Integer 같은 기존 클래스를 다르게 정렬하고 싶을 때클래스를 수정할 수 없을 때 2. Comparable 상세 설명 Comparable 구현하기class Student implements Comparable { String name; int age; public Student(String name, int age) { this.n..

Backend/Java 2025.09.28

클린 아키텍처[ 레이어드 아키텍처,클린 아키텍처, 헥사고날 아키텍처 ]

레이어드 아키텍처로 생각하면소프트웨어 아키텍처란 아키텍처 : 어떤 대상의 구성과 동작 원리 , 구성 요소간의 관계 및 시스템 외부 환경과의 관계를 설명하는 하나의 설명서 ex) 시스템 아키텍처는 시스템이 전반적으로 어떻게 구성되어있는지, 각각의 요소들은 무엇이 있는지에 대해 설명한다.ex ) 소프트웨어 아키텍처 : 소프트웨어 구성요소들 사이 관계를 표현   레이어드 아키텍처관심사가 같은 코드들을 계층으로 그룹화  레이어드 아키텍처 특징1. 계층화로 인한 분리된 책임 2. 편의에 따라 여러 계층을 추가 가능하다Ex) presentation, application, domain, persistence 3. 구조가 쉽고 단순하고 익숙하다 4. 데이터베이스 주도 설계가 될 수 있다.  레이어드 아키텍처 흐름 상..

jpa hibernate sql 로그 안보이는 문제 해결

jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: truelogging: level: org.hibernate.SQL: debug org.hibernate.orm.jdbc.bind: trace  jpa: properties: hibernate: show_sql: trueshow_sql은 System.out.println 처럼 콘솔출력이므로 사용하지않고 log로 찍는것이 좋다. logging: level: org.hibernate.SQL: debug이것으로 hibernate가 생성하는 쿼리 로그로 확인가능  org.hibernate.sql 로 적으면 안보인다...