분류 전체보기 212

프로그래머스 - 가장 큰 수(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제의 요구사항 분석을 이해하는것은 쉬웠으나, 구현이 매우 어려웠다. 주어진 숫자들로 가장 큰수를 만들기 위해서는 숫자들을 문자열로 변경하여 사전순의 역순으로 정렬한 것을 이어 붙히면 가장 큰 수가 된다. 그러기 위해서는 일단 입력 배열을 정수 배열에서 문자열 배열로 변경해줘야한다. String[] arr = new String[numbers.length]; for (int i = 0; i   그 후  문자열 배열을 조건에 맞게 ..

알고리즘/정렬 2025.01.11

JDBC란 무엇인가

JDBC란? JDBC등장 전에는 다음과 같은 어려움이 존재했다. 1. 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 함 께 변경해야 한다. 2. 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습해야 한다.  JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. - 위키백과  개발자는 사용되는 데이터베이스가 변경되어도 JDBC 구현 라이브러리만 변경하면 된다. 따라서 다른 종류의 데이터베이스로 변경해도 애플리케이션 서버의 사용 코드를 그대로 유지할 수..

BackEnd/Database 2025.01.11

스프링을 이용한 파일 업로드, 다운로드

스프링의 MultipartFile 인터페이스를 이용하여 파일 업로드를 쉽게 구현 가능하다. package com.example.upload.controller;import jakarta.servlet.http.HttpServletRequest;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;impor..

스프링 - 파일 업로드(1)

폼 전송의 두가지 방식은 다음과 같다.  application/x-www-form-urlencoded 방식  HTTP Body에 문자형식으로 &로 구분하여 전송한다. 하지만 이러한 방식에는 한계가 있는데, 파일을 업로드 할때는 바이너리 데이터를 전송해야 하는데 이러한 방식으로는 파일 업로드가 힘들다. 따라서 multipart/form-data 전송 방식을 사용해야 한다. multipart/form-data 방식이 방식을 사용하면 각각의 전송 항목이 Content-Disposition이라는 헤더로 구분된다. 폼의 일반 데이터는 각 항목별로 문자가 전송되고, 파일의 경우 파일 이름과 Content-Type이 추가되고 바이너리 데이터가 전송된다.  직접 서버에 파일 업로드 해보기 application.prop..

포맷터 - Formatter , @NumberFormat, @DateTimeFormat

웹 애플리케이션에서 객체를 문자로, 문자를 객체로 변환할때 유용하게 사용할 수 있는 포맷터에 대해서 공부했다. ex)숫자에 1000단위로 쉼표를 넣어야 하는 경우 OR"1,000"이라는 문자를 1000이라는 숫자로 변경 해야하는 경우  이때 사용할 수 있는것이 Locale이다.Locale ==> 날짜나 숫자표현 방법에 대한 현지화 정보  package com.example.typeconverter.formatter;import lombok.extern.slf4j.Slf4j;import org.springframework.format.Formatter;import java.text.NumberFormat;import java.text.ParseException;import java.util.Locale;@..

프로그래머스 - 더 맵게(Java)

문제 이해가 어렵지 않은 문제이고 최소힙 구현만 한다면 쉽게 풀 수 있는 문제이다. https://developerwoohyeon.tistory.com/163 [Java] PriorityQueue를 활용한 힙(Heap) 구현자바에서는 PriorityQueue를 활용하여 최소힙을 구현 가능하다. 최소 힙이란?최소 힙은 부모 노드가 항상 자식 노드보다 작거나 같은 값을 가지는 완전 이진 트리로, 최솟값이 루트에 위치한다. impdeveloperwoohyeon.tistory.com 문제 해결  우선 scoville 배열의 모든 숫자를 우선순위 큐에 삽입해준다. PriorityQueue minHeap = new PriorityQueue(); int answer = 0; for(int s..

알고리즘/힙 2025.01.09

[Java] PriorityQueue를 활용한 힙(Heap) 구현

자바에서는 PriorityQueue를 활용하여 최소힙을 구현 가능하다. 최소 힙이란?최소 힙은 부모 노드가 항상 자식 노드보다 작거나 같은 값을 가지는 완전 이진 트리로, 최솟값이 루트에 위치한다. import java.util.PriorityQueue;public class HeapExample { public static void main(String[] args) { // Integer를 저장하는 최소 힙 생성 PriorityQueue minHeap = new PriorityQueue(); // 요소 추가 minHeap.offer(5); minHeap.offer(2); minHeap.offer(8); min..

알고리즘/힙 2025.01.09

@ExceptionHandler

스프링에서 API예외 처리 문제를 해결하기 위해 @ExceptionHandler를 제공한다. 매우 편리하여 사용하기 쉽다. package com.example.exception.api;import com.example.exception.Exception.UserException;import com.example.exception.exhandler.ErrorResult;import lombok.AllArgsConstructor;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.sprin..

스프링 부트 - ExceptionResolver

스프링 부트에서 제공하는 ExceptionResolverExceptionHandlerExceptionResolver - @ ExceptionHandler를 처리함, API 예외 처리는 대부분 이 기능으로 해결한다.ResponseStatusExceptionResolver - HTTP 상태 코드를 지정해준다DefaultHandlerExceptionResolver - 스프링 내부 기본 예외를 처리한다   ResponseStatusExceptionResolver  1. @ResponseStatus 사용하여 예외 처리package com.example.exception.Exception;import org.springframework.http.HttpStatus;import org.springframework.w..