전체 글 215

프로그래머스 - 최소직사각형(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  처음에는 제귀알고리즘을 사용해서 가로 새로가 바뀐 모든 경우의 수에서 넓이의 최소값을 구하려고 했는데 너무 복잡해졌다. 이 문제를 풀면서 너무 알고리즘의 틀에만 박혀서 문제를 풀면 더욱 어려워질 수 도 있다는 것을 알게 되었다. 지금까지 문제를 보면 어떤 알고리즘을 적용 할지부터 생각하는 나 자신을 반성하게 되었다. 정해진 알고리즘을 적용하는것이 아닌 사고방식만 틀어서 적용하면 더욱 쉽게 풀 수 있는 문제가 있는데 이게 바로 그 문제이다.  ..

데이터베이스 연결, JDBC개발 - 등록, 조회, 수정 ,삭제

서버와 데이터베이스를 연결하는 방법에 대해서 공부했다. 사용된 데이터베이스 : H2    데이터베이스에 접근하기위해 필요한 정보들을 상수로 만들어 관리package hello.jdbc.connection;public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/test"; public static final String USERNAME = "sa"; public static final String PASSWORD = "";}   데이터베이스에 연결하려면 JDBC가 제공하는 DriverManager.getConnection(..) 을 사용하면 된다.이렇게 하면 라이브러리..

BackEnd/Database 2025.01.12

프로그래머스 - H-Index(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42747# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ex) 0, 1, 3, 5, 6 문제에서 가장 중요한 조건은 다음과 같다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 여기서 알 수 있는 사실은 H-Index는 배열의 길이보단 작다는 뜻과, 그 중에서 h번 이상 인용된 논문이 h편 이상이라는 것 이다. 따라서 크기 비교를 위해서 오름차순 정렬을 하는것이 바람직하다.  H-I..

알고리즘/정렬 2025.01.12

프로그래머스 - 가장 큰 수(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