전체 글 669

[SpringBoot] 실행가능한 JAR

SpringBoot는 웹어플리케이션을 마치, JAVA 프로그램처럼 구동한다. 이전에는 방식이 달랐다. 개발자가 코드를 짜면 외장 웹서버 환경에서 동작 가능하도록 WAR형식으로 압축한 뒤, 웹서버에 배포해야만 했다. SpringBoot는 내장웹서버를 사용한다. 그래서 웹어플리케이션이 JAVA프로그램 같이 구동된다. 실행가능한 JAR JAR 파일은 여러 JAVA클래스 파일이 배포가능하도록 하나로 묶은 파일이다. JAR가 Main클래스가 있어서 실제 프로그램으로 실행가능하다면 이를, 실행가능한 JAR 라 부른다. package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.au..

SPRING/Spring Boot 2023.04.27

[SpringBoot] SpringBoot 웹환경 구성 원리

지난 포스팅에서는 Spring Boot 클래스를 직접 만들어보았다. [SpringBoot] 내장톰캣에서 Spring Boot클래스 만들기 [SpringBoot] Main클래스에서 내장톰캣 실행시키기 [SpringBoot] 외장톰캣에서 SpringMVC 구현하기 [SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장 lordofkangs.tistory.com MySpringBootMain 클래스는 Main클래스로 MySpringApplication 클래스를 호출하여 실행한다. MySpringApplication 클래스는 스프링컨테이너, DispatcherServlet, 내장톰캣을 생성 및 설정을 담당하는 클..

SPRING/Spring Boot 2023.04.27

[CodingTest] 개미전사 ( DP )

문제 개미 전사는 부족한 식량을 충당하고자 메뚜기 마을의 식량창고를 몰래 공격하려고 한다. 메뚜기 마을에는 여러 개의 식량창고가 있는데 식량창고는 일직선으로 이어져 있다. 각 식량창고에는 정해진 수의 식량을 저장하고 있으며 개미 전사는 선택적으로 약탈하여 식량을 빼앗을 예정이다다. 이때 메뚜기 정찰병들은 일지선상에 존재하는 식량창고 중에서 서로 인접한 식량창고가 공격받으면 바로 알아챌 수 있다. 따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서는 최소한 한 칸 이상 떨어진 식량창고를 약탈해야 한다. 예를 들어 식량창고 4개가 다음과 같이 존재한다고 가정하자. 예시) { 1, 3, 1, 5 } 이때 개미 전사는 두 번째 식량창고와 네 번째 식량창고를 선택했을 때 최댓값인 총 8개의 식량..

문제풀이/DP 2023.04.20

[CodingTest] 1로 만들기 ( DP )

문제 정수 X가 주어질때 정수 X에 사용할 수 있는 연산은 다음과 같이 4가지이다. 1) X가 5로 나누어떨어지면, 5로 나눈다. 2) X가 3으로 나누어 떨어지면, 3으로 나눈다. 3) X가 2로 나누어 떨어지면, 2로 나눈다. 4) X에서 1을 뺀다. 정수 X가 주어졌을때, 연산 4개를 적절히 사용해서 1을 만들어야한다. 이 연산을 사용하는 횟수의 최솟값을 출력해라. X = 26일 경우 1. 26 - 1 = 25 2. 25 /5 = 5 3. 5 / 5 = 1 입력 첫째 줄에 정수 X이 주어진다. (1

문제풀이/DP 2023.04.16

[ DB ] H2 DB를 사용하는 이유

H2 데이터베이스는 간단한 프로젝트나 테스트용으로 적합한 데이터베이스이다. H2의 장점은 Embeded모드를 지원하기 때문이다. Application과 DB의 통신 Oracle , MySQL, MariaDB의 작동원리는 위 그림과 같다. Application에서 DB에 read/write 하려면, DBMS와 맞는 JDBC 라이브러리를 설치하여 TCP/IP 통신을 해야한다. 이와같이, Application과 DBMS가 독립된 프로세스로 분리되어 있으면 DBMS는 많은 기능을 제공할 수 있다. 하지만 반대급부로 설정이 어려워지고 무거워진다. 개발자는 DB를 설치 및 설정해야 하고 프로세스를 유지해야 한다. 또한 App과 DBMS는 독립된 프로세스이기에 '통신' 과정이 수반된다. 그러므로 속도도 느리다. 실운..

DB/H2 2023.04.15

[CodingTest] 떡볶이 떡 만들기 ( 이진탐색 )

1. 문제 오늘 동빈이는 여행 가신 부모님을 대신해서 떡집 일을 하기로 했다. 오늘은 떡볶이 떡을 만드는 날이다. 동빈이네 떡볶이 떡은 재밌게도 떡볶이 떡의 길이가 일정하지 않다. 대신에 한 봉지 안에 들어가는 떡의 총 길이는 절단기로 잘라서 맞춰준다. 절단기의 높이(H)를 지정하면 줄지어진 떡을 한 번에 절단한다. 높이가 H보다 긴 떡은 H 위의 부분이 잘릴 것이고, 낮은 떡은 잘리지 않는다. 예를 들어 높이가 19, 14, 10, 17cm인 떡이 나란히 있고 절단기 높이를 15cm로 지정하면 자른 뒤 떡의 높이는 15, 14, 10, 15cm가 될 것이다. 잘린 떡의 길이는 차례대로 4, 0, 0, 2cm이다. 손님은 6cm만큼의 길이를 가져간다. 손님이 왔을 때 요청한 총 길이가 M일 때 적어도 M..

[CodingTest] 부품찾기 ( 이진탐색 )

부품 찾기 문제 동빈이네 전자 매장에는 부품이 N개 있다. 각 부품은 정수 형태의 고유한 번호가 있다. 어느 날 손님이 M개의 종류의 부품을 대량으로 구매하겠다며 당일 날 견적서를 요청했다. 동빈이는 때를 놓치지 않고 손님이 문의한 부품 M개 종류를 모두 확인해서 견적서를 작성해야 한다. 이때 가게 안에 부품이 모두 있는지 확인하는 프로그램을 작성해보자. 예를 들어 가게의 부품이 총 5개일 때 부품 번호가 다음과 같다고 하자. N=5 [8, 3, 7, 9, 2] 손님은 총 3개의 부품이 있는지 확인 요청했는데 부품 번호는 다음과 같다. M=3 [5, 7, 9] 이때 손님이 요청한 부품 번호의 순서대로 부품을 확인해 부품이 있으면 yes를, 없으면 no를 출력한다. 구분은 공백으로 한다. 입력 첫째 줄에 ..

[CodingTest] 백준 10814번 나이순 정렬 : 단어정렬 - 퀵, 병합, 힙정렬

문제) 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 ) 퀵정렬, 병합정렬, 힙정렬로 풀었다. 버블정렬은 시간초과가 발생한다. 파이썬은 리스트에 중복된 값을 제거할 때, 조건문에 not in 연산자를 사용하면 된다. 나는 이를 힙정렬 풀이 때 알게 되어 힙정렬에서 not in 연산자를 이용하여 풀었다. - 퀵정렬 풀이 # 입력 n = int(input()) input_list = [] for i in range(n) : input_list.append(input()) # 퀵소트 함수 def ..

[python] 백준 2750번 수 정렬하기1 : 힙정렬(heap sort)

문제) 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 알고리즘) [알고리즘] 힙 정렬 ( Heap Sort ) 힙 정렬( Heap Sort )은 성능 좋은 정렬 알고리즘이지만 원리를 이해하기 쉽지 않다. 그 이유는 완전 이진 트리를 이용하기 때문이다. [자료구조] 완전이진트리 배열에 저장하기 완전 이진 트리를 lordofkangs.tistory.com 힙정렬은 힙트리를 이용한 정렬이다. 힙트리는 두 가지 조건이 충족되어야 한다. 1) 완전이진트리여야 한다. 2) 부모는 반드시 자식보다 커야 한다. ( 부모는 반드시..

[python] 백준 2750번 수 정렬하기1 : 병합정렬(merge sort)

문제 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 알고리즘 [JAVA] 백준 2751번 수 정렬하기2 : 병합 정렬( Merger Sort ) 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. lordofkangs.tistory.com 위 알고리즘을 사용하여 풀었으나, 파이썬의 장점을 살리지 못한 풀이가 되었다. 파이썬은 리스트를 생성하..