개요 이번에는 Kafka Source Connect와 Kafka Sink Connect를 등록해보려 합니다. Kafka Source Connect는 MySQL에 변경 사항을 감지하여 Kafka Topic에 데이터를 보내는 역할을 합니다. Kafka Sink Connect는 Topic에 저장된 메세지를 MySQL에 보내 저장하는 역할을 합니다. 이를 위해 Kafka Connect와 MySQL에 접근하기 위해 JDBC Connector와 MySQL Connector 설정되어야 합니다. 이는 전글을 참조하면 좋을 거 같습니다. https://cladren123.tistory.com/205 Kafka Connect 설치 & 실행 & MySQL 설정 개요 이번에는 Windows에 Kafka Connect 설치해보..
문제 출저 https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 풀이 i,j로 가는데 갈 수 있으면 1, 갈 수 없으면 0으로 2차원 배열이 주어집니다. 이 때, i에서 j로 갈 수 있으면 1, 갈 수 없으면 0으로 표시하는 2차원 배열을 구해야 합니다. BFS로 풀었습니다. 시작점을 매개변수로 받으면 다른 정점으로 갈 수 있는지 구하는 함수를 만들었습니다. 탐색은 BFS를 이용하였고 방문한 곳을 1차원 boolean 배열 visited로 표현해 중복 방문을 방지했습니다...
개요 이번에는 Windows에 Kafka Connect 설치해보려 합니다. Kafka Connect는 Apache Kafka 일부로 제공되는 프레임워크로 스트림 데이터를 외부 시스템과 연결하는데 사용합니다. Kafka Connect는 Kafka Connect Source 와 Kafka Connect Sink 가 있습니다. Kafka Connect Source : 외부 시스템의 데이터를 가져와 메시지 형태로 Kafka Topic에 저장합니다. 예시) RDBMS에서 변경 사항을 실시간으로 Kafka에 전송할 때 쓰입니다. Kafka Connect Sink : Topic에 저장된 메세지를 구독하고 있는 외부 시스템으로 전달합니다. 예시) Kafka Topic에 있는 데이터를 Elasticsearch, RDBM..
문제 출저 https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 문제 풀이 2차원 배열에 지훈, 벽, 불이 줄어진다. 지훈이는 1초에 상하좌우 중 한 곳을 움직이고 불은 1초에 4방향으로 퍼진다. 지훈이와 불은 벽으로는 이동하지 못한다. 지훈이는 2차원 배열 가장자리를 넘으면 탈출한다. 이 때 탈출에 필요한 최소 시간을 구해야 한다. (탈출이 불가능할 경우 IMPOSSIBLE 을 출력) BFS를 이용해 풀었습니다. 헷갈렸던 점은 불과..
문제 출저 https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 문제 풀이 크레인 n개가 주어진다. 각 크레인은 들 수 있는 무게 제한이 주어진다. 박스 m개가 주어진다. 각 박스에는 무게가 있다. 이 때, 크레인을 이용해서 박스를 옮길 때 전부 다 옮기는데 최소 시간을 구하는게 이 문제의 요구 사항 입니다. 정렬과 구현으로 풀었습니다. 크레인, 박스를 내림차순 정렬하여 큰 숫자가 앞에 배치하도록 했습니다. 그 후 큰 크레인이 큰 박..
문제 출저 https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 문제 풀이 학생 번호와 학생이 좋아하는 학생의 번호 4개가 주어진다. 이 때 교실의 한 변이 n일 때, n*n명의 학생을 겹치지 않게 교실에 배치한다. 상하좌우 인접한 4곳의 좋아하는 학생수에 따라 만족도 점수가 부여된다. 순서대로 학생들을 배치한 다음 만족도 점수를 계산하는게 이 문제의 요구사항 입니다. 구현 학생을 배치할 때는 3가지 조건에 따라 앉힙니다. 비어있는 칸 중..
문제 출저 https://www.acmicpc.net/problem/17182 17182번: 우주 탐사선 우주 탐사선 ana호는 어떤 행성계를 탐사하기 위해 발사된다. 모든 행성을 탐사하는데 걸리는 최소 시간을 계산하려 한다. 입력으로는 ana호가 탐색할 행성의 개수와 ana호가 발사되는 행성의 위 www.acmicpc.net 문제 풀이 행성의 갯수 n과 발사 위치 k 그리고 행성과 행성 간의 거리가 2차원 배열로 주어집니다. 이 때, 모든 행성을 방문할 때 가장 적은 거리를 구해야 합니다. 여기서는 갔던 곳을 또 방문할 수 있습니다. DFS와 다익스트라로 풀었습니다. 정점에서 각 정점으로 이동할 때 최단 거리를 다익스트라로 구해 2차원 배열에 저장했습니다. 출발 위치를 K로 고정하고 DFS를 통해 나머..
문제 출저 https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 문제 풀이 이닝 수 N 과 각 선수들이 각 이닝마다 어떻게 치는지 정보가 주어진다. 이를 통해 선수들의 순서를 정하여 최고 점수를 구하는게 이 문제의 요구사항이다. 구현 문제로 DFS로 순서를 정하고 Simulation으로 순서에 대한 점수를 구했습니다. 점수를 구할 때 마다 기존에 값과 비교하여 큰 값만 저장하여 최고 점수를 구했습니다. 소스 코드 package baekjoon.backjo..
문제 출저 https://www.acmicpc.net/problem/21758 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 문제 풀이 꿀의 정보가 주어집니다. 꿀벌 2개와 벌통을 위치합니다. 꿀벌은 자신의 위치에서 벌통까지 경로에 있는 모든 꿀을 채집합니다. (벌통의 꿀도 포함합니다. 다만, 꿀벌이 있는 위치는 가져오지 못 합니다.) 이때 채집할 수 있는 꿀의 최대 크기를 구하는게 이 문제의 요구사항 입니다. 누적합으로 풀었습니다. 왼쪽에서 시작해 합을 누적하는 배열, 오른쪽에서 시작해 합을 누적하는 배열, 총 2개를 만들었습니다. 3가지 경우를 두었습니다. 벌통(맨 왠쪽), 꿀벌1, 꿀벌2(맨 오른쪽) 꿀벌1, 벌통, 꿀벌2 꿀벌1, 꿀벌2, 벌..
문제 출저 https://www.acmicpc.net/problem/16401 16401번: 과자 나눠주기 첫째 줄에 조카의 수 M (1 ≤ M ≤ 1,000,000), 과자의 수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 과자 N개의 길이 L1, L2, ..., LN이 공백으로 구분되어 주어진다. 과자의 길이는 (1 ≤ L1, L2, ..., LN ≤ 1, www.acmicpc.net 문제 풀이 과자를 나눠줄 조카의 수 m, 과자의 수 n이 주어지고 n개의 과자 길이가 주어집니다. 과자의 길이를 설정해 조카들이게 나눠주는데 이 때 가장 긴 과장의 길이를 구하는게 이 문제의 요구사항입니다. (조카에게 모두 동일한 크기의 과자를 주어야합니다. 그러지 못할 때는 0 출력) 이분 탐색으로 ..
문제 출저 https://www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이러 www.acmicpc.net 문제 풀이 격자판의 크기 n, 바이러스 개수 m이 주어지고 연구소 상황이 n*n 격자판으로 주어집니다. 0은 빈 공간, 1은 벽, 2는 바이러스를 놓을 수 있는 위치 입니다. 바이러스는 1초에 상하좌우로 전파됩니다. 바이러스를 적절한 위치에 두어 전파되는 시간의 최솟값을 구하는게 이 문제의 요구 사항 입니다. 만약 다 전파할 수 없다면 -1을 출력합니다. DFS, BFS, 시뮬레이션을 이용해 ..
문제 출저 https://www.acmicpc.net/problem/1799 1799번: 비숍 첫째 줄에 체스판의 크기가 주어진다. 체스판의 크기는 10이하의 자연수이다. 둘째 줄부터 아래의 예와 같이 체스판의 각 칸에 비숍을 놓을 수 있는지 없는지에 대한 정보가 체스판 한 줄 단위로 www.acmicpc.net 문제 풀이 체스판 크기 N이 주어집니다. 그리고 비숍을 둘 수 있는 위치가 주어집니다. (1 : 가능, 0 : 불가능) 비숍을 겹치지 않게 가장 많이 둘려고 할 때, 둘 수 있는 최댓값을 구하는게 이 문제의 요구사항 입니다. 백 트래킹으로 풀었습니다. 이 때, 비숍은 대각선으로만 움직이기 때문에 흑과 백이 서로를 간섭할 수 없습니다. 따라서 흑과 백을 따로 백트래킹을 돌린 다음 값을 더합니다. ..