본문 바로가기

전체 글

(56)
온라인 서점 #2 - RESTful API 구현(도서 CRUD) API 설계엔드 포인트HTTP 메서드요청 본문상태응답 본문설명/booksGET 200Book[]카탈로그 내 모든 도서 조회/booksPOSTBook201Book카탈로그에 새 도서 추가 409 동일한 ISBN 도서가 이미 존재/books/{isbn}GET 200Book주어진 ISBN 도서 조회 404 주어진 ISBN 도서가 존재하지 않음/booksPUTBook200Book주어진 ISBN 도서 갱신 404 주어진 ISBN 도서가 존재하지 않음/books/{isbn}DELETE 204 주어진 ISBN 도서 삭제 주요 HTTP 메서드GET : 서버에서 리소스를 조회POST : 서버에 리소스를 생성PUT : 서버의 리소스를 완전히 수정DELETE : 서버의 특정 리소스 삭제주요 HTTP 상태 코드200..
예제로 배우는 알고리즘 - 연결 리스트(Linked List) 기본 개념 연결 리스트노드에 데이터와 다음 노드의 위치(포인터)를 함께 저장하여 논리적으로 연결하여 데이터를 저장하는 자료구조 문제 풀이 전략 # 문제 파악연결 리스트(Linked List), 노드(Node)가 직접적으로 언급되거나, 논리적으로 연결된 데이터는 연결 리스트를 활용해 풀 수 있습니다 # 핵심 아이디어 1 - 노드 클래스 생성class ListNode { int val; ListNode prev, next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode prev) { this.val = val; this.next = prev; } ListNode(int val, ListNode next) { th..
예제로 배우는 알고리즘 - 다차원 DP LeetCode 120. Triangle https://leetcode.com/problems/triangle/description/?envType=study-plan-v2&envId=top-interview-150문제 설명triangle 배열이 주어졌을 대 최소 경로 합을 위에서 아래로 반환각 단계마다 아래 행의 인접한 숫자(i 또는 i + 1)로 이동 가능 예시 1입력 : triangle = [[2],[3,4],[6,5,7],[4,1,8,3]] 출력 : 11설명 : 2 - 3 - 5 - 1예시 2입력 : triangle = [[-10]] 출력 : -10 제약 조건1 triangle[0].length == 1 triangle[i].length == triangle[i - 1].length + 1 -10..
온라인 서점 #1 - 프로젝트 기획과 초기 설계 프로젝트 개요프로젝트명 : BookStore(가제)배경 : 주문, 결제를 넘어서서 다양한 이벤트 및 커뮤니티 등 책과 관련된 모든 활동을 한 플랫폼에서 할 수는 없을까?목표사용자가 책을 사고, 읽고, 기록하고, 공유하는 모든 경험을 한 곳에서 해결하는 플랫폼 구축1초 이내 응답을 보장하는 API 설계확장성과 유지보수를 고려한 도메인 중심의 MSA 구조 설계기대 효과서적, 굿즈 유통 수수료 기반 수익프리미엄 구독 모델기술 스택Java(17) & Spring(3.5.0)레거시, 생태계 : 검증된 산업 표준, 방대한 라이브러리생산성 : Spring Boot로 초기 설정 최소화Gradle성능 : 병렬 빌드 및 캐싱으로 빠름가독성 : 읽기 쉽고 표현력이 뛰어남MySQL비용 : 커뮤니티 에디션은 무료생태계 : My..
예제로 배우는 알고리즘 - 1D DP LeetCode 53. Climbing Stairs https://leetcode.com/problems/maximum-subarray/?envType=study-plan-v2&envId=top-interview-150문제 설명계단 정상에 가기 위해서 n걸음이 걸린다. 한번에 1계단 혹은 2계단을 오를 수 있을 때 정상까지 오를 수 있는 방법의 갯수를 반환 예시 1입력 : n = 2출력 : 2설명 :1 + 1 / 2예시 2입력 : n = 3출력 : 3설명 : 1 + 1 + 1 / 1 + 2 / 2 + 1 제약 조건1 풀이 전략1. 완전 탐색 - 재귀ways(n) = ways(n - 1) + ways(n - 2)를 재귀 호출시간 복잡도가 O(2n)으로 제약 조건 내 실행 불가2. 재귀 + 메모이제이션(T..
예제로 배우는 알고리즘 - Kadane 알고리즘 LeetCode 53. Maximum Subarray https://leetcode.com/problems/maximum-subarray/?envType=study-plan-v2&envId=top-interview-150문제 설명정수 배열 nums가 주어졌을 때 합이 가장 큰 부분 배열을 찾아서 그 합을 반환 예시 1입력 : nums = [-2,1,-3,4,-1,2,1,-5,4]출력 : 6설명 :하위 배열 [4, -1, 2, 1]의 합이 가장 큽니다.예시 2입력 : nums = [1]출력 : 1설명 : 하위 배열 [1]의 합이 가장 큽니다.예시 3입력 : nums = [5,4,-1,7,8]출력 : 23설명 : 하위 배열 [5,4,-1,7,8]의 합이 가장 큽니다. 제약 조건1 -104 풀이 전략1. ..
예제로 배우는 알고리즘 - 그래프 BFS 순서대로 모든 경우를 이동하며 최단 거리 찾기 예제 - LeetCode 909. Snakes and Laddershttps://leetcode.com/problems/snakes-and-ladders/description/?envType=study-plan-v2&envId=top-interview-150 1. 문제 이해보드 위에서 최종 칸까지 도달하는 최소 이동 횟수 구하기주사위를 통해 최대 6칸 이동 가능(행마다 방향이 뒤바뀜)뱀 또는 사다리를 만나면 해당 칸으로 바로 이동(시작점과 최종 칸에는 없음)2. 요구사항 분석입력n == board.length == board[i].length2 board[i][j] 는 -1이거나 [1, n^2] 범위의 수출력최소 이동 횟수, 불가능 하면 -1 3. 해결 아..
Guide - JPA로 데이터 접근하기 https://spring.io/guides/gs/accessing-data-jpa Getting Started | Accessing Data with JPAYou can run the application from the command line with Gradle or Maven. You can also build a single executable JAR file that contains all the necessary dependencies, classes, and resources and run that. Building an executable jar makes it easy to ship, verspring.io 이 가이드는 스프링 데이터 JPA를 사용하여 관계형 데이터베이스에 데이터를 저장..