개발 33

[Spring] DTO와 VO

📚 DTO와 VO(Data Transfer Object and Value Object)데이터를 입력 받아서 전달하고, 값을 처리하는 과정에 DTO, VO 라는 개념이 필요하다.쉽게 말해서 VO 는 값 그 자체로 입력 받은 값을 저장하는 객체이며, DTO는 VO를 불러오고 전달하기 위해서 사용하는 그릇이라고 보면 된다.DTODTO (Data Transfer Object) : 데이터 전송 객체로, 프로세스 간에 데이터를 전달하는 객체말그대로 데이터를 전달하기 위해서 사용하며, 데이터를 담는 그릇이나 상자라고 생각하면 쉽다.서버와 클라이언트가 데이터를 주고 받을 때 사용하는 데이터 묶음이다. DTO는 데이터 전달 뿐만 아니라, View에 필요한 데이터만 포함시켜서 사용할 수 있다.id, 생성시각과 같이 클라..

Back-end/Spring 16:48:32

[백준 1697] 숨바꼭질 (BFS) - java

https://www.acmicpc.net/problem/1697 문제 파악 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어지고 N에서 K까지 도달하는 최단시간을 구하는 문제하지만 순간이동으로 2배를 이동할 수 있는 조건이 추가된다. 입출력 예시입력 : 5 17출력 : 4 수빈이가 5-10-9-18-17 순으로 가면 4초만에 동생을 찾을 수 있다.접근 방법프로그래머스의 보물찾기처럼 순간이동 로직을 따로 만들면 되지않을까? 1. 일단 x축으로만 이동하니까 방향탐색은 {-1, 1}로 기존의 bfs에서 2반복으로 줄인다.2. 도달하면 종료, 방문배열 체크3. 만약, 2배 순간이동을 사용한다면 어떻게 이동할 수 있는지 탐색 로직도 밑에 추가하고, 방문 체크 처음에는 해시셋으로 구현하는게 좋을 것 같다고 생..

Algorithm/BOJ 2025.06.15

[Spring] 의존성 주입 (Dependency Injection)

📚 의존성 주입 (Dependency Injection)이란?DI는 객체 지향 프로그래밍에서 객체가 필요로 하는 의존성을 외부에서 주입해주는 설계 패턴이다.→ 즉, 객체를 직접 생성하지 않고, 외부에서 주입받아서 사용함 스프링에서 의존성 주입이 필요한 이유는 결합도를 낮추고, 테스트 용이성을 높이기 위해서이다.Autowired@Autowired : 스프링이 해당 타입의 Bean을 찾아서 자동 주입스프링에서 의존성 주입을 수행하기 위해서 사용하는 어노테이션이다. 필요한 객체를 선언하면 스프링이 자동으로 찾아서 의존관계를 주입한다.@Autowired는 기본적으로 타입(Type) 기준으로 스프링 컨테이너에 있는 Bean 중 일치하는 객체를 찾아서 주입한다. @Autowired 는 사용하는 위치에 따라서 유연..

Back-end/Spring 2025.06.15

[Spring] 스프링 컨텍스트(Context)와 스프링 빈(Bean)

스프링 컨텍스트 (Spring Context)ApplicationContext : 스프링 컨테이너(Spring Container)의 실질적인 구현체 애플리케이션에서 사용할 객체 Bean을 생성하고, 조립하고, 생명주기를 관리하는 중앙 관리자 역할을 한다.→ 일반적으로 Application Context를 스프링 컨테이너라고 한다. 사실상 스프링 컨테이너와 스프링 컨텍스트(애플리케이션 컨텍스트)는 같은 개념! 스프링 컨텍스트의 역할역할설명Bean 관리객체를 생성하고 싱글턴으로 유지의존성 주입(DI)필요한 객체를 자동으로 주입설정 관리XML, 자바 클래스, 어노테이션 기반 설정생명주기 관리초기화/소멸 콜백 지원 (@PostConstruct, @PreDestroy)이벤트 처리ApplicationEvent 발행..

Back-end/Spring 2025.06.11

[Spring] 스프링 프레임워크 (Spring Framwork)

스프링 프레임워크스프링은 자바 플랫폼을 위한 오픈소스 어플리케이션 프레임워크로서 엔터프라이즈급 어플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션이다.프레임워크프레임워크(framework) : 어떠한 목적을 달성하기 위해 복잡한 문제를 해결하기 위한 뼈대, 체제이다. 즉, 응용 프로그램이나 소프트웨어의 개발을 수월하게 해주는 구조화된 가이드 또는 환경 애플리케이션의 기본 아키텍쳐는 프레임워크가 제공하고, 그 뼈대의 살만 붙이는 형식으로 개발이 진행된다.장점빠른 구현쉬운 관리개발자들의 역량 획일화검증된 아키텍쳐의 재사용과 일관성 유지스프링 프레임워크 (Spring Framework)IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크 스프링은 POJO, IOC, DI, AOP와 같..

Back-end/Spring 2025.06.10

[Leetcode] Mine Sweeper (BFS/DFS)

https://leetcode.com/problems/minesweeper/description/ 문제 파악클릭하는 좌표가 주어지고 맵에 있는 지뢰를 찾는 문제지뢰를 클릭하면 'X'로 바꾸고 종료, 지뢰가 아니라면 지뢰가 근처에 있을 때 '1', 근처에 없다면 'B'로 맵을 바꾸게 된다.암시적 그래프의 탐색 문제이지만 최단거리를 찾는 문제는 아니다.그래도 BFS 탐색이 더 편해서 BFS로 진행하였다.접근 방법지뢰를 클릭하면 바로 종료탐색을 하면서 방문하면 'B'로 바꾼다.만약에 인접 노드가 지뢰라면 '1'로 표기지뢰를 체크하기 위해서 지뢰 카운트를 따로 체크하고, 체크가 되었을 경우에만 바꾸도록 지시한다.탐색을 마치면 최종 배열을 반환코드 구현import java.util.*;class Solution ..

Algorithm/Leetcode 2025.06.07

[JDBC] 자바 JDBC 연동

JDBCJDBC(Java Database Connectivity)는 애플리케이션이 데이터베이스와 통신할 수 있도록 돕는 API로, Java 프로그램이 데이터베이스에 연결해서 조회하거나, 삽입, 수정, 삭제(CRUD) 할 수 있게 해주는 자바 표준 인터페이스이다. JDBC가 수행하는 역할데이터베이스와 같은 데이터 소스에 연결데이터베이스에 쿼리와 업데이트 명령문을 보냄.귀하의 질의에 대한 답변으로 데이터베이스에서 수신된 결과를 검색하고 처리.JDBC 구성 요소JDBC API데이터베이스와의 편리한 통신을 위한 다양한 방법과 인터페이스를 제공, Java SE, Java EE가 여기에 해당.JDBC 드라이버 관리자데이터베이스 연결을 위해 올바른 데이터베이스별 드라이버를 로드하는 역할JDBC 테스트 스위트JDBC ..

Back-end/java 2025.06.04

[자료구조] 트리(Tree)

트리 (Tree)트리(Tree)는 노드들이 계층적으로 연결된 비선형 자료구조로, 루트 노드와 부모-자식 관계의 서브트리들로 구성된다,트리는 재귀적으로 정의된다.트리에서는 DFS가 쓰이는 경우가 좀 더 많다.용어노드 (Node): 트리의 각 요소를 말하며, 데이터(값)와 포인터(자식 노드를 가리키는 링크)를 포함한다.간선 (Edge): 노드와 노드를 연결하는 선으로, 부모와 자식 노드 간의 관계를 나타냄루트 노드(Root Node): 트리의 최상위 노드, 부모 노드가 없다. 트리는 하나의 루트 노드만 가질 수 있다.부모 노드(Parent Node): 트리 구조에서 다른 노드(자식 노드)를 가리키고 연결을 유지하는 상위 노드자식 노드(Child Node): 부모 노드로부터 파생된 하위 노드서브트리(Subtr..

Algorithm 2025.05.28

[프로그래머스] Lv2. 주차 요금 계산 (HashMap)

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 파악요금표, 차의 입/출차 기록이 주어질 때, 각 차량의 정산된 요금을 계산해서 반환하는 문제까다로운 점은 요금표는 정수형 배열, 입/출차 기록은 "차량번호 시간 in/out" 형태로 주어진다. 문제 설명은 문제 링크에서 확인!!입출력 예feesrecordsresult[180, 5000, 10, 600]["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00..

[프로그래머스] Lv2. 게임 맵 최단거리 (BFS)

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 파악정말 단순히 벽에 둘러싸져있는 길에서 목적지까지 최단거리를 구하는 문제제한사항maps는 n x m 크기의 게임 맵의 상태가 들어있는 2차원 배열로, n과 m은 각각 1 이상 100 이하의 자연수입니다.n과 m은 서로 같을 수도, 다를 수도 있지만, n과 m이 모두 1인 경우는 입력으로 주어지지 않습니다.maps는 0과 1로만 이루어져 있으며, 0은 벽이 있는 자리, 1은 벽이 없는 자리를 나타냅니다.처음에 캐릭터는 게임 맵의 좌측 상단인 (1, 1) 위치에 있으며, 상대방 진영은 게임 맵의 우측 하단인 (n, m) 위치에 있습니다. 입출력 예mapsanswe..