전체 글121 [Spring] Day 25 - Spring Boot Validation과 @Valid로 요청 데이터 검증하기 [Spring] Day 25 - Spring Boot Validation과 @Valid로 요청 데이터 검증하기1. Validation이란?Spring Boot로 REST API를 개발하다 보면 클라이언트로부터 다양한 데이터를 전달받는다.예를 들어 회원가입 API에 다음과 같은 요청이 들어올 수 있다.{ "name": "", "email": "wrong-email", "password": "123"}이 요청에는 세 가지 문제가 있다.이름이 비어 있다.이메일 형식이 올바르지 않다.비밀번호가 너무 짧다.이러한 데이터를 검증하지 않고 데이터베이스에 저장하면 잘못된 데이터가 쌓이거나 서비스 로직에서 예상하지 못한 문제가 발생할 수 있다.Validation은 클라이언트가 전달한 데이터가 서버에서 정의한 규칙을.. 2026. 10. 24. [Spring] Day 24 - DTO / Request / Response와 기존 DTO 검증 [Spring] Day 24 - DTO / Request / Response와 기존 DTO 검증1. 학습 목표이번 학습의 주제는 DTO(Data Transfer Object)다.DTO는 계층 간 또는 시스템 간에 데이터를 전달하기 위해 사용하는 객체다. Spring Boot REST API에서는 클라이언트의 요청 데이터를 전달받거나 서버의 처리 결과를 응답으로 반환할 때 주로 사용한다.이번 학습에서는 다음 내용을 다룬다.Entity와 DTO를 분리하는 이유Request DTO와 Response DTO의 차이DTO 변환 방식Java record 활용Entity를 직접 반환할 때의 문제점API 응답 구조 설계AI를 활용한 기존 DTO 검증 및 리팩토링이전 실습에서 DTO를 이미 구현했으므로 이번에는 불필요하.. 2026. 10. 24. [Spring] Day 23 - REST API와 HTTP Method, CRUD API 설계 [Spring] Day 23 - REST API와 HTTP Method, CRUD API 설계1. 학습 목표오늘은 Spring Boot 백엔드 개발에서 중요한 개념인 REST API를 학습했다.REST의 개념부터 Resource, HTTP Method, HTTP Status Code를 이해하고, 콘텐츠(Content)를 대상으로 CRUD API를 설계하는 방법을 정리한다.이번 학습에서는 API를 직접 설계하고, AI 코딩 도구를 활용해 구현을 진행할 수 있도록 구체적인 API 명세와 테스트 시나리오도 작성했다.오늘의 학습 목표REST와 Resource의 개념 이해HTTP Method별 역할과 차이점 이해HTTP Status Code의 의미와 사용 기준 이해RESTful API 설계 원칙 익히기Conten.. 2026. 10. 22. [Spring] Day 22 - Spring MVC와 REST API CRUD 구현 및 IntelliJ HTTP Client 테스트 [Spring] Day 22 - Spring MVC와 REST API CRUD 구현 및 IntelliJ HTTP Client 테스트1. 학습 목표오늘은 Spring MVC의 동작 원리를 이해하고, Controller, Service, Repository의 역할을 구분하여 간단한 CRUD API를 구현했다.AI를 활용해 Java 클래스를 단계별로 생성하고, IntelliJ IDEA의 HTTP Client를 이용해 작성한 API가 정상적으로 동작하는지 확인하는 것까지 진행했다.이번 학습의 주요 목표는 다음과 같다.MVC 패턴과 Front Controller 패턴 이해DispatcherServlet의 역할 이해Controller, Service, Repository의 책임 구분HTTP 요청부터 응답까지의 처리.. 2026. 10. 21. [Spring] Day 21 - Spring Core 1주 차 종합 복습: IoC, DI, Bean, Singleton [Spring] Day 21 - Spring Core 1주 차 종합 복습: IoC, DI, Bean, Singleton1. 학습 목표이번 학습에서는 Spring Core 1주 차에 배운 핵심 개념을 종합적으로 복습한다.Spring을 사용한 백엔드 애플리케이션에서는 객체를 생성하고 관리하는 방식이 일반적인 Java 프로그램과 다르다. Spring 컨테이너가 객체의 생명주기와 의존 관계를 관리하며, 개발자는 비즈니스 로직에 집중할 수 있다.이번 글에서는 다음 개념을 중심으로 정리한다.IoC(Inversion of Control): 제어의 역전DI(Dependency Injection): 의존성 주입Bean: Spring 컨테이너가 관리하는 객체ApplicationContext: Spring IoC 컨테이너의.. 2026. 10. 20. [Spring] Day 20 - Spring Boot 프로젝트 구조 설계와 계층형 아키텍처 [Spring] Day 20 - Spring Boot 프로젝트 구조 설계와 계층형 아키텍처1. 학습 목표Spring Boot 프로젝트를 개발할 때는 기능을 구현하기 전에 패키지 구조와 클래스별 책임을 먼저 설계하는 것이 중요하다.패키지 구조가 명확하지 않으면 Controller에 비즈니스 로직이 들어가거나, 여러 클래스에서 데이터 접근 코드를 중복해서 작성하는 문제가 발생할 수 있다.이번 학습에서는 spring-media-api 프로젝트를 기준으로 다음 내용을 정리한다.Spring Boot 프로젝트 패키지 구조 설계Controller, Service, Repository의 책임 분리Domain과 DTO의 차이Config와 Exception 패키지의 역할AI를 활용한 초기 프로젝트 구조 생성 및 검토REA.. 2026. 10. 20. [코딩테스트] programmers - 조이스틱 - Java Greedy 알고리즘과 최소 이동 경로 [코딩테스트] programmers - 조이스틱 - Java Greedy 알고리즘과 최소 이동 경로1. 문제 소개문제 출처: 프로그래머스 - 조이스틱문제 유형: Greedy (그리디 알고리즘)핵심 개념: 문자 변경 최소화, 좌우 이동 경로 최적화조이스틱을 이용해 모든 문자가 A인 문자열을 목표 문자열로 변경해야 합니다.조이스틱은 다음 두 가지 조작을 할 수 있습니다.상하 이동: 현재 문자를 알파벳의 다음 또는 이전 문자로 변경합니다.좌우 이동: 문자열에서 다음 문자 위치로 이동합니다. 문자열의 양 끝은 연결되어 있어 맨 앞에서 왼쪽으로 이동하면 맨 뒤로 이동합니다.목표 문자열을 완성하기 위해 필요한 조이스틱 조작 횟수의 최솟값을 구해야 합니다.2. 문제 해결 전략이 문제는 조작을 크게 두 가지로 나누어 .. 2026. 10. 17. [코딩테스트] programmers - 프로세스 - Java Queue와 우선순위 큐 활용 [코딩테스트] programmers - 프로세스 - Java Queue와 우선순위 큐 활용1. 문제 소개문제 출처: 프로그래머스 - 프로세스난이도: Level 2알고리즘 유형: 큐(Queue), 시뮬레이션이 문제는 여러 프로세스가 대기 중일 때 주어진 실행 규칙에 따라 특정 프로세스가 몇 번째로 실행되는지 구하는 문제입니다.프로세스는 다음 규칙에 따라 처리됩니다.대기 중인 프로세스 중 현재 프로세스보다 우선순위가 높은 프로세스가 있으면 현재 프로세스를 큐의 뒤로 보냅니다.그렇지 않으면 현재 프로세스를 실행합니다.실행된 프로세스는 대기 큐에서 제거됩니다.주어진 location에 해당하는 프로세스가 몇 번째로 실행되는지 반환해야 합니다.2. 문제 예제다음과 같은 입력이 주어졌다고 가정하겠습니다.int[] p.. 2026. 10. 16. [코딩테스트] programmers - 전력망을 둘로 나누기 - DFS와 재귀 호출 이해하기 [코딩테스트] programmers - 전력망을 둘로 나누기 - DFS와 재귀 호출 이해하기1. 문제 소개문제: 프로그래머스 - 전력망을 둘로 나누기알고리즘: 그래프(Graph), 깊이 우선 탐색(DFS)이 문제는 여러 송전탑이 전선으로 연결된 전력망에서 전선 하나를 끊어 두 개의 네트워크로 나누고, 두 네트워크에 속한 송전탑 개수의 차이가 최소가 되는 경우를 찾는 문제다.전선은 방향이 없는 연결이므로 모든 송전탑은 양방향으로 이동할 수 있다.예를 들어 다음과 같이 5개의 송전탑이 연결되어 있다고 가정하자.1 ─ 2 ─ 3 ─ 4 │ 5여기서 2번과 3번 송전탑 사이의 전선을 끊으면 다음과 같이 두 개의 네트워크로 나뉜다.1 ─ 2 3 ─ 4 │ .. 2026. 10. 16. [코딩테스트] programmers - 피로도 - DFS와 백트래킹, visited 복구 이해하기 [코딩테스트] programmers - 피로도 - DFS와 백트래킹, visited 복구 이해하기1. 문제 개요프로그래머스의 피로도(Lv.2) 문제는 DFS와 백트래킹을 이용해 해결할 수 있는 완전 탐색 문제입니다.현재 피로도와 각 던전의 최소 필요 피로도, 소모 피로도가 주어집니다. 던전은 한 번씩만 방문할 수 있으며, 탐험할 수 있는 던전의 최대 개수를 구해야 합니다.이 문제에서 가장 중요한 부분은 다음 코드입니다.visited[i] = true;dfs( fatigue - dungeons[i][1], count + 1, dungeons);visited[i] = false;현재 던전을 방문 처리한 후 DFS를 호출하고, 재귀 호출이 끝나면 방문 상태를 복구합니다.이번 글에서는 이 코드가.. 2026. 10. 15. [코딩테스트] programmers - 호텔 대실 - Java 풀이 및 코드 비교 [코딩테스트] programmers - 호텔 대실 - Java 풀이 및 코드 비교1. 문제 정보문제: 호텔 대실플랫폼: 프로그래머스난이도: Level 2언어: Java알고리즘: 그리디(Greedy), 정렬, 큐(Queue), 우선순위 큐(PriorityQueue)문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1556512. 문제 설명호텔 예약 정보가 담긴 2차원 배열 book_time이 주어집니다.각 예약은 입실 시각과 퇴실 시각으로 구성되어 있으며, 객실을 사용한 후에는 다음 손님을 받기 위해 퇴실 시각부터 10분간 청소해야 합니다.모든 예약을 처리하기 위해 필요한 최소 객실 수를 구해야 합니다.예를 들어 다음과 같은 예약이 있다고 .. 2026. 10. 14. [코딩테스트] programmers - 택배상자 (Lv.2) - Stack [코딩테스트] programmers - 택배상자 (Lv.2) - Stack1. 문제 정보문제 이름: 택배상자출처: 프로그래머스난이도: Level 2사용 언어: Java핵심 알고리즘: Stack (스택)문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1317042. 문제 설명1번부터 N번까지의 택배 상자가 컨테이너 벨트를 통해 순서대로 전달된다.택배 기사님이 원하는 상자의 적재 순서는 order 배열에 주어진다.컨테이너 벨트에서는 상자를 순서대로 꺼낼 수 있다. 원하는 순서와 다른 상자는 보조 컨테이너에 보관할 수 있지만, 보조 컨테이너는 입구가 하나뿐이므로 마지막에 넣은 상자를 가장 먼저 꺼내야 한다.이러한 구조를 LIFO(Last In.. 2026. 10. 14. 이전 1 2 3 4 ··· 11 다음 반응형