전체 글 682

[PS] BOJ9081 단어 맞추기 ( string ) with JAVA

9081번: 단어 맞추기 입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 하나의 단어가 한 줄로 주어진다. 단어는 알파벳 A~Z 대문자로만 이루어지며 항상 공백이 없는 연속된 알 www.acmicpc.net ◎ 문제풀이 사전 순서로 할 때, 주어진 단어의 알파벳으로 구성된 주어진 단어의 다음 단어를 찾는 문제이다. 처음에는 DFS로 풀었다. DFS로 사전순서대로 탐색하다가 주어진 단어의 다음 단어를 찾는 식이었다. 그런데 이는 메모리 초과가 발생했다. DFS를 하려면 방문처리를 위한 배열도 생성해야 하는데, 그런거 없이 오로지 문자열만을 조작하여 문제를 풀어야 했다. 어떠한 알고리즘이 필요한 거였는데, 잘 몰라서 구글링을 하였다. 원리는 생각보다 복잡했다..

문제풀이 2023.09.20

[Docker] Docker Compose로 SpringBoot와 H2 연동 및 실행하기

[Docker] 실습용 SpringBoot 프로젝트 만들기 1) JDK 11 설치 - JDK11 설치 ( https://www.oracle.com/kr/java/technologies/javase/jdk11-archive-downloads.html ) - 터미널에서 설치 확인 2) InteliJ 설치 - InteliJ 설치 페이지 ( https://www.jetbrains.com/idea/download/?section=windows#sect lordofkangs.tistory.com 지난 포스팅에서 ORM을 JPA로 하여 H2 DB와 연동하는 간단한 SpringBoot App을 만들어 보았다. 그럼 SpringBoot App과 h2 DB를 Docker Compose를 활용하여 컨테이너에 띄어보자. Do..

Ops/Docker 2023.09.18

[Docker] 실습용 SpringBoot 프로젝트 만들기

1) JDK 11 설치 - JDK11 설치 ( JDK11 설치경로 ) - 터미널에서 설치 확인 2) InteliJ 설치 - InteliJ 설치 페이지 ( IntelliJ 설치경로 ) 3) H2 DB 설치 - 1.4.200 버전을 설치 ( H2 DB 설치경로 ) - 설치 후 설정 과정 ( 인프런 스프링 입문 강의 - 섹션6 H2 데이터베이스 설치 참고 ) 4) IntelliJ에 SpringBoot 프로젝트 띄우기 - hellospring.zip 설치 후 압축 풀기 - 인텔리제이 File 탭 > open > hellospring 디렉토리 이동 > build.gradle 선택하여 프로젝트 열기 5) 프로젝트 실행하기 - Main 클래스로 이동 hellospring > src > main > java > hel..

Ops/Docker 2023.09.18

[PS] BOJ3584 가장 가까운 공통 조상 ( tree ) with JAVA

3584번: 가장 가까운 공통 조상 루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두 www.acmicpc.net ◎ 문제풀이 두 개의 노드에서 공통 부모를 찾는 문제이다. 1) 부모테이블을 만든다. 2) 루트를 찾는다. 3) While문 안에 While문을 넣어 이중for문처럼 하나씩 비교하여 공통부모를 찾는다. ◎ 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Str..

문제풀이 2023.09.18

[PS] BOJ2230 수 고르기 ( TwoPointer ) with JAVA

2230번: 수 고르기 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 www.acmicpc.net ◎ 문제풀이 아직 투포인터 알고리즘에 대학 숙련도가 낮아 처음에 투포인터를 어디에 위치시켜야 할지를 몰랐다. [BOJ] 백준 2230번 : 수 고르기 (JAVA) 문제 N(1≤N≤100,000)개의 수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하 steady-coding.tistory.com 위 블로그에..

문제풀이 2023.09.15

[Network] VLSM ( Variable Length Subnet Mask )

[Network] 서브넷 마스크 이해하기 ( Subnet Mask ) IP는 장비에 부여되는 가변적인 주소이다. 동일한 영역에 모여있는 장비는 연결되어 네트워크를 형성하는데, 이를 LAN(Local Area Network)이라 부른다. LAN의 입구 역할은 라우터가 하는데, 이를 게이 lordofkangs.tistory.com 지난 포스팅에서 서브넷 마스크를 29로 하여 6개의 장비에 IP를 부여해보았다. 네트워크주소 브로드캐스트주소 호스트주소 부여 가능한 IP 203.230.8.0 203.230.8.7 203.230.8.1 ~ 203.230.8.6 할당완료(0개) 203.230.8.8 203.230.8.15 203.230.8.9 ~ 203.230.8.14 6개 203.230.8.16 203.230.8...

CS/NETWORK 2023.09.14

[Network] 서브넷 마스크 이해하기 ( Subnet Mask )

IP는 장비에 부여되는 가변적인 주소이다. 동일한 영역에 모여있는 장비는 연결되어 네트워크를 형성하는데, 이를 LAN(Local Area Network)이라 부른다. LAN의 입구 역할은 라우터가 하는데, 이를 게이트웨이(Gateway)라 부른다. 그러므로 한 LAN에서 다른 LAN으로 데이터를 전송하려면 우선 게이트웨이가 위치한 네트워크에 도착해야 한다. 집주소를 떠올리면 이해가 쉽다. 경복궁을 간다고 가정해보자. 경복궁 주소는 아래와 같다. 서울특별시 종로구 / 사직로 161 경복궁에 가려면 우선 서울특별시 종로구(네트워크 주소)에 가야한다. 그리고 상세주소인 사직로 161(호스트 주소)을 찾아가야 한다. IP도 마찬가지이다. 우선 네트워크를 찾아가야 되고 게이트웨이에 입성하면 호스트 주소로 장비를 ..

CS/NETWORK 2023.09.14

[PS] BOJ11404 플로이드 ( Floyd-Warshall ) with JAVA

https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net ◎ 문제풀이 가장 기본적인 플로이드-워셜 알고리즘 문제이다. [Algorithm] 플로이드-워셜(Floyd-Warshall) 알고리즘이란? [Algorithm] 다익스트라 알고리즘(Dijkstra)이란? 다익스트라 알고리즘(Dijkstra) 다익스트라 알고리즘은 특정지점에서 다른지점으로 가는 최단경로를 구하는 알고리즘이다. 다익스트라 알고리즘은 그 lordofkangs.tistory.com 알고리..

문제풀이 2023.09.14

[PS] BOJ12738 가장 긴 증가하는 부분 수열3 ( LIS ) with JAVA

12738번: 가장 긴 증가하는 부분 수열 3 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net ◎ 문제 풀이 [PS] BOJ12015 가장 긴 증가하는 부분수열2 ( LIS ) with JAVA 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net ◎ 문제풀이 DP는 lordofkangs.tistory.com (위 문제와 풀이는 똑같다. ..

문제풀이 2023.09.13

[SpringMVC] API 예외처리하기(3) - @ExceptionHandler, @ControllerAdvice

[SpringMVC] API 예외처리하기(2) - HandlerExceptionResolver 컨트롤러에서 에러가 발생하면 복잡해진다. 클라이언트 요청 -> WAS -> 컨트롤러 (에러발생) -> WAS -> 컨트롤러 -> 클라이언트 응답 [SpringMVC] API 예외처리하기(1) - BasicErrorController 위 그림은 Spring에서 lordofkangs.tistory.com 지난 포스팅에서 API 호출에서 발생하는 에러를 처리하기 위해, ExceptionResolver를 직접 만들어 구현해보았다. Controller에서 에러가 발생하면 디스패처 서블릿으로 전파된다. 디스패처 서블릿은 에러가 WAS로 전파되지 않도록 에러를 핸들링 할 수 있는 ExceptionResolver를 탐색한다...

Dev/SPRING 2023.09.13