본문 바로가기

728x90

분류 전체보기

(451)
[알고리즘] 위상 정렬 위상 정렬(Topological Sort)이란?방향성이 있는 그래프(Directed Acyclic Graph, DAG)에서 선행 관계를 유지하면서 모든 노드를 순서대로 나열하는 방법즉, 어떤 일을 수행하는 순서가 있을 때 그 순서를 결정하는 알고리즘 예시 : 특정 작업이 끝나야만 다른 작업이 가능할 때   위상 정렬을 알기 전 알아야 할 지식진입 차수(indegree) : 특정 노드로 들어오는 간선의 개수진출 차수(outdegree)  : 특정 노드에서 나가는 간선의 개수  위상 정렬 알고리즘 동작 과정위상 정렬 알고리즘은 큐를 사용하여 구현을 합니다.진입 차수가 0인 노드를 큐에 넣습니다.큐가 빌 때까지 다음 과정을 반복합니다.큐에서 원소를 꺼내 해당 노드에서 나가는 간선을 그래프에서 제거새롭게 진입 ..
[Spring Boot] @PrePersist 어노테이션 @PrePersist란?JPA의 라이프사이클 이벤트 어노테이션 중 하나로, 엔티티가 영속화(저장)되기 전에 실행할 로직을 정의할 때 사용EntityManager.persist() 혹은 save() 중 하나라도 호출이 될 때 데이터베이스에 INSERT 되기 직전 실행되는 메소드  예제 : 유저 가입일 자동 값 입력UserEntityimport jakarta.persistence.*;import lombok.*;import java.time.LocalDateTime;@Getter@Entity@Table(name = "user")@AllArgsConstructor@NoArgsConstructor@Builder@ToStringpublic class UserEntity { @Id @GeneratedVa..
[백준] DFS 스페셜 저지 (16964번) 1. 문제 해석사용자가 DFS를 통해 정답을 제출했을 때 복수의 정답을 채점하는 경우의 알고리즘을 짜는 문제이다즉 답이 여러 개일 경우 해당 제출한 답이 맞는지 확인하는 코드를 작성하는 문제이다 2. 사용되는 자료구조Set[] 인접 리스트 사용목적 : 노드끼리 연결된 노드들만 저장하기 위해 사용이유 : 인접 행렬(int[][])를 사용했을 때 공간 복잡도에 걸림또한 List[]를 사용했을 때 해당 노드에 접근하는데 시간복잡도(73%에서 걸렸습니다)가 걸림Stack목적 : 사용자가 입력한 값을 이용하여 해당 노드로 접근이 가능한지 파악할 때 접근을 할 수 없다면 이전 노드로 돌아가야 하기 때문이유 : 매개변수로 제어해볼려고 했었지만 이전의 이전 노드를 저장할 수 없어 사용하게 되었음 3. 핵심 아이디어최초..
[백준] 후위 표기식 (1918번) 후위 표기식(Reverse Polish Notation, RPN) 변환 방법1. 후위 표기식이란?일반적으로 우리가 사용하는 수식은 중위 표기식(Infix Notation)입니다.예를 들어:중위 표기식: A + B * C후위 표기식: ABC*+후위 표기식은 연산자가 피연산자 뒤에 위치하는 표기법으로, 괄호 없이도 연산 순서를 명확히 표현할 수 있습니다. 2. 사용되는 자료구조후위 표기식으로 변환할 때는 스택(Stack)과 큐(Queue) 를 활용합니다.스택(Stack): 연산자를 저장하는 용도로 사용됩니다.큐(Queue) 또는 문자열: 변환된 후위 표기식을 저장하는 용도로 사용됩니다.이유연산자는 우선순위에 따라 LIFO(Last-In-First-Out, 후입선출) 구조인 스택에 저장해야 합니다.피연산자와 ..
[Java] Queue 구현 Queue를 잘 모르신다면 여기를 클릭해주세요.  구현하는 Queue 기능offer(element) -> 뒤에 요소 추가poll() -> 앞에 요소 추출 후 반환peek() -> 앞에 요소 반환size() -> 크기 반환isEmpty() -> 비어있는지 true/false 반환clear() -> queue 비우기 Queue 구현하기(Linked List)혹시 기능만 보고 구현하시고 싶으신 분을 위해 숨김으로 하겠습니다.더보기더보기package util;import java.util.NoSuchElementException;public class Queue { Node head; Node tail; int size; public Queue() { size = 0; }..
[수학] 좌표평면 두 점 사이의 거리 백준 문제를 풀 다 보면 좌표평면에서 두 점 사이의 거리를 구하는 문제를 종종 볼 수 있습니다.수학을 안한지 오래되서 기억이 가물가물하여 한 번 정리를 해보았습니다. 우선 알아야하는 것은 피타고라스의 정리 이론을 알고 있어야합니다.만약 모르신다면 여기를 눌러주세요.  좌표평면 두 점 사이의 거리P1(1,2) 와 P2(4,6) 거리를 구하시오P1(1, 2), P2(4,6)의 거리를 구하기 위해서는 우선 직각 삼각형을 그려야합니다.  피타고라스의 정리 사용하기a^2 + b^2 = c^2여기에서 좌표를 구하면 a = 3, b = 4 이므로9 + 16 = c^2이 됩니다. 즉 P1(1,2) 와 P2(4,6) 거리는 루트25 = 5가 됩니다.
[Java] Deque 구현 Deque를 잘 모르신다면 여기를 눌러주세요.  구현하는 Deque 기능pushFront(element) → 앞쪽에 요소 추가 pushBack(element) → 뒷쪽에 요소 추가popFront() → 앞쪽 원소 제거 및 반환popBack() → 뒷쪽 원소 제거 및 반환peekFront() → 앞쪽 원소 확인(제거하지 않음)peekBack() → 뒷쪽 원소 확인(제거하지 않음)isEmpty() → 비어 있는지 확인(true/false) Deque 구현하기(Linked List)혹시 기능만 보고 구현하시고 싶으신 분을 위해 숨김으로 하겠습니다.더보기더보기public class Deque { private Node front; private Node back; private int size;..
[자료구조] Deque(Double-Ended Queue) Deque(덱, Double-Ended Queue)란?양쪽(앞, 뒤)에서 삽입과 삭제가 모두 가능한 큐이며 스택과 큐의 특성이 동시에 있는 자료구조입니다. Deque 특징1. 앞, 뒤로 삽입, 삭제 가능일반적인 큐는 한 쪽으로만 삽입이 가능하고 반대편으로 삭제만 가능했다면 Deque는 양 옆으로 삽입, 삭제가 가능한 자료구조입니다. 2. 빠른 연산 속도일반적으로 LinkedList 또는 Array로 구현되며 삽입/삭제 연산이 O(1)로 수행됩니다. 3. 두 가지 형태로 사용 가능StackQueue Deque 주요 연산연산설명pushFront(element)앞쪽에 요소 추가pushBack(element)뒷쪽에 요소 추가popFront()앞쪽 원소 제거 및 반환popBack()뒷쪽 원소 제거 및 반환peek..

728x90