문제 출저 https://www.acmicpc.net/problem/2631 2631번: 줄세우기 KOI 어린이집에는 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기 www.acmicpc.net 문제 풀이 번호를 가진 아이들이 있습니다. 이 아이들을 번호 순서대로 줄을 세우려 할 때 이동해야 하는 최소한의 갯수를 구해야 합니다. DP를 이용해 풀었습니다. 이동해야 하는 최소 갯수는 오름차순이 되지 않은 숫자들의 갯수 입니다. 예제의 경우를 보면 3 7 5 2 6 1 4 인데 이 때 가장 긴 오름차순의 길이는 3 5 6 으로 3 입니다. 그러면 나머지 숫자들의 자리를 바꿔주면 되므로 정..
문제 출저 https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 문제 출저 2차원 배열에 바이러스가 숫자로 부여됩니다. 바이러스는 1초에 상하좌우로 퍼지고 이미 바이러스가 있다면 퍼지지 않습니다. s 초 후, (x,y) 좌표에 어떤 바이러스가 있는지 구해야 합니다. 구현으로 문제룰 플었습니다. dot 클래스를 만들어 x,y,count 좌표를 만들었습니다. List virus 자료형을 만들어 바이러스 번호대로 위치를 저장..
문제 출저 https://www.acmicpc.net/problem/20002
문제 출저 https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 문제 풀이 n이 주어지며 n*n의 2차원 배열로 된 숫자들이 주어집니다. 이 때 이 숫자들 중 n번째로 큰 숫자를 구해야 합니다. 우선수위 큐를 이용해 풀었습니다. 2차원 배열의 숫자들을 우선순위 큐에 넣어 n번째 큰 숫자를 구했습니다. 소스 코드 package baekjoon.backjoon11.day0110.day01; import java.io.BufferedReader; import j..
문제 출저 https://www.acmicpc.net/problem/15989 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net 문제 풀이 숫자가 주어졌을 때, 1,2,3 을 더하여 숫자를 만들 수 있는 경우의 수를 구해야 합니다. DP를 이용하여 풀었습니다. 점화식을 세우는게 중요합니다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 칩니다. 이 때문에 수식을 오름차순으로 만들었습니다. int[][] dp 2차원 int 배열을 만들었습니다. ..
문제 출저 https://www.acmicpc.net/problem/25682 25682번: 체스판 다시 칠하기 2 첫째 줄에 정수 N, M, K가 주어진다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제 풀이 검은색과 흰 색으로 칠해진 n, m 크기의 판이 주어집니다. 변인 k인 정사각형으로 자릅니다. 이 정사각형을 올바른 체스판으로 만들기 위해서 색칠을 칠해야 할 때 최소한의 칠하는 횟수를 구해야 합니다. 누적합으로 풀었습니다. 체스판은 2가지 경우가 있습니다. 왼쪽 위가 검은색이거나 흰색일 경우 입니다. 2가지 상황에 맞는 누적합 배열을 구해서 모든 경우의 수를 비교하여 최소값을 구했습니다. 소스 코드 package ..
문제 출저 https://www.acmicpc.net/problem/12847 12847번: 꿀 아르바이트 월세를 내기 바로 전 날 까지 인 n (1 ≤ n ≤ 100,000) 일과 일을 할 수 있는 날 m (0 ≤ m ≤ n) 일이 주어진다. 그 다음 줄 에는 1일부터 n일 까지 일급 Ti가 순서대로 주어진다. (0 < Ti ≤ 1,000,000) www.acmicpc.net 문제 풀이 전체 기간 n과 일을 할 수 있는 기간 m이 주어집니다. 이 때, 최대한 많은 돈을 버는 경우를 구해야 합니다. 누적합으로 풀었습니다. 1차원 배열 long[] prefix를 만들고 탐색을 통해 최대의 돈을 구했습니다. 범위가 크기 때문에 int가 아닌 long 자료형을 사용했습니다. 소스 코드 package baekj..
문제 출저 https://www.acmicpc.net/problem/16139 16139번: 인간-컴퓨터 상호작용 첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째 www.acmicpc.net 문제 풀이 문자열이 주어지고 알파벳과 구간의 시작과 끝을 q번 주어집니다. 이 떄, 시작과 끝 구간에 알파벳의 갯수를 구해야 합니다. 누적합을 통해 풀었습니다. 문자열이 주어졌을 때, a~z 까지의 각각의 알파벳에 해당하는 2차원 배열의 누적합을 만들었습니다. 이 누적합 배열을 이용하여 정답을 구했습니다. 소스 코드 package bae..
개요 RabbitMQ와 Spring Boot를 연결해 보겠습니다. RabbitMQ를 Spring Cloud Bus로 활용하여 Spring Cloud Config가 관리하는 설정 파일이 변경되면 해당 파일을 사용하는 서버들을 모두 업데이트 해보려 합니다. Spring Cloud Bus란 Spring Cloud 환경에서 마이크로 서비스 간 메세지 전달을 지원하는 프레임워크 입니다. 주로 서비스 간의 설정 변경, 애플리케이션 이벤트 전파, 다른 서비스로 신호 전송 등에 사용됩니다. 구현 RabbitMQ를 Spring Boot에 사용하기 위해 코드를 추가하겠습니다. 의존성 추가 Spring Cloud Config 서버 의존성 추가 // actuator implementation 'org.springframewo..
개요 RabbitMQ는 오픈소스 메세지 브로커로 시스템 간 메세지를 안전하게 전달하는데 사용합니다. AMQP을 기반으로 하며 다양한 메시징 패턴과 다양한 언어 및 플랫폼에서 사용할 수 있습니다. 이번에는 windows 환경에서 RabbitMQ를 설치해보려 합니다. 설치 Windows 환경에서는 RabbitMQ를 설치하기 전에 Erlang을 설치해야 합니다. RabbitMQ는 Erlang 프로그래밍 언어로 작성되었기 때문에 Erlang 런타임 시스템이 필요하기 때문입니다. Erlang 설치 홈페이지에서 Erlang을 다운 받습니다. https://erlang.org Index - Erlang/OTP The official home of the Erlang Programming Language www.erl..
문제 출저 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 문제 풀이 수 N개가 주어집니다. 이 떄 연속된 부분 구간 합이 M으로 나누어 떨어지는 구간의 개수를 구해야 합니다. 누적합으로 풀었습니다. int[] prefix 라는 1차원 정수 배열로 누적합을 만들었습니다. int[] remainder 라는 1차원 정수 배열로 누적합을 m으로 나눈 나머지의 갯수를 저장했습니다. 그 누적합의 갯수를 이..
개요 Spring Cloud Config 서버를 이용하여 설정 정보가 변경되었을 때 서버를 다시 시작하지 않고 반영하는 방법을 정리해보겠습니다. 저는 예시로 Spring Boot로 Product 서버를 만들었고 Github를 외부 저장소로 했습니다. 구현 의존성 추가 // actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' Actuator는 Spring Boot 애플리케이션의 운영 중인 상태 및 성능 지표를 모니터링하고 관리하는 기능을 제공하는 라이브러리 입니다. Actuator는 내부 정보를 엔드포인트를 통해 접근할 수 있게 합니다. (예시, API 통신) Spring Boot Actuator 사이트에 들어가면 ..