It 52

프로그래머스: 가장 먼 노드(JAVA)

문제 설명프로그래머스의 "가장 먼 노드" 문제는 다음과 같은 내용을 가지고 있습니다.노드 수 n, **간선 정보 edge**가 주어집니다.1번 노드에서 가장 멀리 떨어진 노드의 개수를 구해야 합니다.이때, 거리는 "최단 경로 상의 간선 수"를 의미합니다.접근 방법이 문제는 전형적인 그래프 탐색 문제입니다."최단 거리"를 구하는 문제이므로, BFS (너비 우선 탐색) 을 사용하는 것이 적절합니다.BFS를 사용하는 이유DFS는 경로 탐색에는 적합하지만, 최단 거리 보장이 없습니다.BFS는 시작 노드에서 가까운 노드부터 차례로 탐색하므로, 최단 거리를 보장할 수 있습니다.풀이인접 리스트를 이용해 그래프를 표현합니다.1번 노드에서 BFS를 수행하여 각 노드까지의 최단 거리를 구합니다.distance 배열에서 가..

Algorithm 2025.05.14

JPA 핵심 매핑(Mapping) 개념

JPA(Java Persistence API)는 자바 객체와 데이터베이스 테이블 간의 자동 매핑을 제공하는 ORM(Object-Relational Mapping) 프레임워크입니다. 본 글에서는 JPA의 가장 기초적이지만 필수적인 네 가지 구성 요소를 다룹니다.1️⃣ 객체와 테이블 매핑JPA는 자바 객체를 관계형 데이터베이스 테이블에 매핑할 수 있도록 합니다.이때 사용하는 기본 어노테이션은 @Entity와 @Table입니다.@Entity // 이 클래스는 JPA가 관리하는 엔티티@Table(name = "member") // 테이블명 지정 (생략 시 클래스명 소문자)public class Member { @Id private Long id; private Strin..

Back_End/JPA 2025.05.08

XSS(Cross-Site Scripting)란?

웹 애플리케이션 개발자라면 꼭 알아야 하는 보안 취약점 중 하나가 바로 **XSS(Cross-Site Scripting)**입니다. 이 취약점은 사용자 입력을 제대로 검증하지 않아 악성 스크립트가 삽입되고 실행되는 문제로, 사용자 정보 탈취부터 시스템 장악까지 매우 치명적인 보안 위협이 될 수 있습니다.이 글에서는 XSS가 무엇인지, 어떤 방식으로 공격이 이뤄지는지, 그리고 어떻게 방어할 수 있는지를 예제와 함께 자세히 설명하겠습니다.✅ XSS란 무엇인가?**XSS (Cross-Site Scripting)**는 공격자가 웹 페이지에 **악의적인 스크립트(JavaScript)**를 삽입하고, 해당 스크립트가 다른 사용자의 브라우저에서 실행되도록 유도하는 공격입니다.주로 다음과 같은 상황에서 발생합니다:사용..

Web 2025.04.17

JPA, ORM, HIBERNATE이란?

🔶 ORM(Object-Relational Mapping)이란?ORM은 객체(Object)와 관계형 데이터베이스(Relational Database)의 데이터를 자동으로 매핑해주는 기술이다.즉, 개발자는 SQL문을 직접 작성하지 않고도 자바 클래스만으로 DB 데이터에 접근하고 조작할 수 있다.// Java 객체public class User { private Long id; private String name; private String email;}이 User 클래스는 ORM에 의해 USER 테이블과 자동으로 매핑된다. 🔷 Hibernate란?Hibernate는 가장 널리 사용되는 ORM 프레임워크 중 하나로, Java 진영에서 객체와 테이블을 매핑하는 일을 담당한다.주요 특징SQL..

Back_End/JPA 2025.04.11

백준 2293번: 제출

[ 문제 설명 ]N가지 종류의 동전을 사용하여 가치의 합이 K원이 되도록 만들 때, 가능한 경우의 수를 구하는 문제입니다.동전의 구성은 같지만 순서가 다른 경우는 같은 경우로 간주합니다.동전은 여러 개 사용할 수 있습니다.[ 문제 해결 방법 ]✅ 기본적인 DP 접근법이 문제는 **동전의 조합 문제이므로 동적 계획법(DP)**을 활용해야 합니다.dp[i]: i원을 만드는 경우의 수점화식:dp[j] += dp[j - coin]초기값: dp[0] = 1 (0원을 만드는 방법은 아무 동전도 사용하지 않는 1가지 경우)3. 메모리 초과 문제 분석기본적인 DP 접근법으로 구현할 경우, 다음과 같은 실수가 발생할 수 있습니다.❌ 메모리 초과 원인불필요한 2차원 배열 사용dp[N][K] 형태로 2차원 배열을 사용하면 ..

Algorithm 2025.04.01

백준 1149번: RGB거리

RGB 거리 문제 풀이: 동적 계획법(DP) 활용이 문제는 N개의 집을 주어진 비용으로 칠하는 문제로, 각 집을 세 가지 색 중 하나로 칠할 수 있습니다. 다만, 두 집이 인접해 있을 경우, 두 집의 색이 같지 않도록 해야 하므로, 이를 해결하기 위해 동적 계획법(DP)을 사용합니다.문제 분석각 집을 빨간색, 초록색, 파란색 중 하나로 칠할 수 있으며, 각 색에 대한 비용이 다릅니다.N개의 집을 칠할 때, 인접한 두 집은 다른 색으로 칠해야 하므로, 최소 비용을 구하는 것이 목표입니다.해결 방법문제의 상태 정의:score[i][j]: i번째 집을 j색으로 칠하는 비용을 나타냅니다.dp[i][j]: i번째 집까지 칠할 때, j색으로 칠한 최소 비용을 기록합니다.점화식:dp[i][0] (i번째 집을 빨간색으..

Algorithm 2025.03.31

자바(Java) Call by Value와 Call by Reference

프로그래밍에서 함수에 값을 전달하는 방식에는 Call by Value(값에 의한 호출)와 Call by Reference(참조에 의한 호출)가 있습니다. Java는 항상 Call by Value 방식을 사용합니다. 하지만 객체를 전달할 때는 참조가 전달되는 것처럼 보이기 때문에 혼동이 생길 수 있습니다. 이 글에서는 Java에서 Call by Value가 어떻게 동작하는지, 그리고 객체를 전달할 때 발생하는 개념적 차이를 코드와 함께 살펴보겠습니다.1. Call by Value (값에 의한 호출)Call by Value는 메서드에 인수를 전달할 때, 원본 값을 복사하여 전달하는 방식입니다. 즉, 메서드 내부에서 값이 변경되더라도 원본 변수에는 영향을 미치지 않습니다.기본형 데이터 타입에서 Call by ..

Back_End/Java 2025.03.20

VPN이란?

1. VPN이란?VPN(가상 사설망, Virtual Private Network)은 공용 네트워크(예: 인터넷)를 통해 안전하게 데이터를 주고받을 수 있도록 해주는 기술입니다. VPN은 사용자의 실제 IP 주소를 숨기고, 데이터를 암호화하여 프라이버시와 보안을 강화하는 역할을 합니다. 2. VPN이 필요한 이유1) 보안 강화공용 Wi-Fi를 사용할 때 VPN을 이용하면 데이터가 암호화되어 해커가 정보를 가로채는 것을 방지할 수 있습니다.2) 개인정보 보호VPN은 사용자의 실제 IP 주소를 숨기고, 가상 IP를 제공하여 웹사이트나 서비스 제공자가 사용자의 위치 및 활동을 추적하지 못하게 합니다.3) 지역 제한 우회Netflix, YouTube, 해외 뉴스 사이트 등 특정 지역에서만 접근 가능한 콘텐츠를 V..

Network 2025.03.20

자바(JAVA) DAO, DTO, VO 란?

1. DAO, DTO, VO란?1.1 DAO (Data Access Object)DAO는 데이터베이스와 직접적으로 상호작용하는 객체로, 데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 수행합니다. DAO는 주로 SQL 쿼리를 실행하고 결과를 반환하는 역할을 합니다.특징:데이터베이스와 직접적인 연결을 담당SQL을 실행하여 데이터를 조회하거나 저장서비스 레이어에서 호출되어 데이터를 주고받음일반적으로 인터페이스와 구현 클래스로 분리하여 사용DAO 예제 (Spring Boot + MyBatis)@Mapperpublic interface UserDAO { @Select("SELECT * FROM users WHERE id = #{id}") UserVO getUserB..

Back_End/Java 2025.02.26

자바 HashMap vs HashTable vs ConcurrentHashMap

공통점키와 값의 쌍으로 데이터를 저장합니다.Map 인터페이스를 구현하여 키를 사용해 값을 빠르게 조회할 수 있습니다.키는 중복 불가하고, 각 키는 하나의 값에만 매핑됩니다.하지만 이 세 클래스는 사용 목적과 동작 방식에서 큰 차이를 보입니다. 1️⃣ HashMap특징비동기적: 멀티스레드 환경에서 안전하지 않음.Null 허용: 하나의 null 키와 여러 null 값을 허용합니다.성능 최적화: 동기화를 지원하지 않기 때문에 단일 스레드 환경에서 빠른 성능을 자랑합니다.예제import java.util.HashMap;public class HashMapExample { public static void main(String[] args) { HashMap map = new HashMap();..

Back_End/Java 2024.12.31