전체 글

· DevOps/Kafka
개요 이번에는 Kafka와 Spring Boot를 연동해보려 합니다. Spring Boot에 메시지를 전송하는 Producer, 메시지를 받는 Consumer의 코드를 추가하여 Kafka를 통해 메시지를 주고 받게 해볼 겁니다. 이 글은 Kafka Consumer 구현, Kafka Producer 구현, 테스트 순으로 정리했습니다. 시작하기 전 Spring Boot에 Producer, Consumer 코드를 추가하기 전에 Kafka에 Topic을 하나 생성해야 합니다. 또한 테스트를 하려면 ZooKeeper와 Kafka를 실행시켜야 합니다. ZooKeeper와 Kafka를 설치하고 실행하는 글은 이전에 정리한 글을 참조하시면 도움이 될 것 입니다. https://cladren123.tistory.com/..
문제 출저 https://www.acmicpc.net/problem/1941 1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5×5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net 문제 풀이 5X5 격자에 이다솜파 S 와 임도연파 Y 가 주어집니다. 7개의 인접한 칸을 선택합니다. 이 때 이다솜파 S가 임도연파 Y보다 커야 합니다. (즉 임도연파가 4이상이 되면 안됩니다.) 이 때, 이 조건을 만족하는 경우의 수를 구하는게 문제의 요구사항 입니다. 백트래킹으로 풀었습니다. 25개의 칸 중 7개를 선택했습니다. (7C25 라 시간초과가 발생하지 않습니다.) 이 때, 칸..
문제 출저 https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 문제 풀이 계랸아 n개 주어진다. 각각의 계란은 내구도와 무게를 가지고 있다. 계란끼리 부딫이면 서로의 무게 만큼 내구도가 감소한다. 내구도가 0 이하가 되면 깨진 것으로 한다. 왼쪽부터 계란을 들어 깨지지 않는 계란과 부딫힌다. 이 때 깨진 계란은 들지 않는다. 계란끼리 부딫혔을 때, 계란이 최대한 많이 깨진 갯수를 구하는게 이 문제의 요구사항이다. 백트래킹으로 풀었습니..
문제 출저 https://www.acmicpc.net/problem/6087 6087번: 레이저 통신 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 www.acmicpc.net 문제 풀이 높이 h, 넓이 w 인 격자판이 주어집니다. 격자판 안에는 레이저를 이어야 하는 지점인 C 2개와 벽인 *, 레이저가 지나가는 . 으로 이루어져 있습니다. 이 때 거울을 설치하면 레이저의 방향을 90도 바꿀 수 있습니다. C끼리 레이저로 연결하기 위해 최소한의 거울 갯수를 구하는 것이 문제의 요구사항 입니다. 다익스트라 알고리즘으로 풀었습니다. int[h][w][4]..
문제 출저 https://www.acmicpc.net/problem/2623 2623번: 음악프로그램 첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net 문제 풀이 가수의 순서가 들어오고 이 순서들을 모두 만족하는 순서를 구해야 합니다. 또한 모두 만족할 수 없을 경우 0을 출력해야 합니다. 위상 정렬로 풀었습니다. 가수들의 순서를 입력받을 때 가수의 간선 정보와 앞에 몇 명의 가수가 와야하는지를 저장했습니다. 만족하지 못 했을 경우는 사이클을 구하는 방식으로 구했습니다. 사이클의 형성은 총 갯수 N이 아닌 경우 입니..
· DevOps/Kafka
개요 이번 글에서는 Kafka를 Windows 환경에서 설치하고 간단한 테스트를 통해 잘 실행되는지 확인해 보겠습니다. Kafka 설치 Kafka 홈페이지 Kafka를 다운받기 위해 홈페이지로 이동합니다. http://kafka.apache.org Apache Kafka Apache Kafka: A Distributed Streaming Platform. kafka.apache.org Kafka 다운로드 우측 상단 위에 DOWNLOAD KAFKA 를 클릭해 다운로드 페이지로 이동합니다. 2.X.X 버전의 Scala 2.13을 다운 받습니다. (3 버전 때에는 버그가 있어서 동작이 잘 안될 수도 있다고 합니다.) tgz 압축 파일 해제 tgz 파일을 C 드라이브에서 압축 해제 합니다. (바탕화면에 풀었다가..
문제 출저 https://www.acmicpc.net/problem/2637 2637번: 장난감 조립 첫째 줄에는 자연수 N(3 ≤ N ≤ 100)이 주어지는데, 1부터 N-1까지는 기본 부품이나 중간 부품의 번호를 나타내고, N은 완제품의 번호를 나타낸다. 그리고 그 다음 줄에는 자연수 M(3 ≤ M ≤ 100)이 주 www.acmicpc.net 문제 풀이 장난감의 종류와 각 장난감이 조립되기 위한 부품들을 알려줍니다. 이 때, 부품은 기본 부품과 중간 부품이 있습니다. 기본 부품은 다른 부품 조립에 사용되는 부품으로 다른 부품으로 조립할 수 없는 기본 부품 입니다. 중간 부품은 부품들로 이루어진 부품들입니다. 최종 완제품 N을 조립하는게 기본 부품이 몇 개 필요한지 구하는게 이 문제의 요구사항 입니다..
문제 출저 https://www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 첫째 줄에 수식의 길이 N(1 ≤ N ≤ 19)가 주어진다. 둘째 줄에는 수식이 주어진다. 수식에 포함된 정수는 모두 0보다 크거나 같고, 9보다 작거나 같다. 문자열은 정수로 시작하고, 연산자와 정수가 www.acmicpc.net 문제 풀이 수식이 주어졌을 때 괄호를 적절히 추가하여 최댓값을 구하는게 이 문제의 요구사항 입니다. 저는 DFS로 풀었습니다. List number를 선언해 수식에 숫자를 순서대로 담았습니다. List operation을 선언해 수식에 연산 기호를 순서대로 담았습니다. dfs(int stage, int left)를 선언합니다. stage는 operation 의 순서이고 ..
Apache JMeter 웹 애플리케이션 성능 테스트 도구로 JAVA를 기반으로 만들어졌습니다. 원래는 웹 애플리케이션에 대한 성능 테스트를 위해 만들었지만, 다양한 테스트 유형과 프로토콜을 지원하게 되었습니다. 서버나 네트워크 혹은 개체에 과부하를 시뮬레이션하여 강도를 테스트 하거나 다양한 부하 유형에서 전체 성능을 분석하는데 사용합니다. 특징 다양한 프로토콜 지원: JMeter는 HTTP, HTTPS, FTP, JDBC, LDAP, SOAP, JMS, MQTT 등과 같은 다양한 프로토콜을 지원합니다. 그래픽 사용자 인터페이스: 사용자 친화적인 GUI를 통해 테스트 케이스를 생성하고 실행할 수 있습니다. 다양한 플러그인 지원: JMeter는 다양한 플러그인을 지원하여 확장성이 높습니다. 추가적인 기능이..
문제 출저 https://www.acmicpc.net/problem/16564 16564번: 히오스 프로게이머 첫째 줄에는 캐릭터의 개수 N, 올릴 수 있는 레벨 총합 K가 주어진다. (1 ≤ N ≤1,000,000, 1 ≤ K ≤ 1,000,000,000) 다음 N개의 줄에는 현재 각 캐릭터의 레벨이 X1, X2, X3, ... , Xn 으로 주어진다. (1 ≤ Xi ≤ www.acmicpc.net 문제 풀이 총 N개의 케릭터의 level이 주어집니. k는 레벨을 올릴 수 있는 총량입니다. 이 때 k를 적절히 분배해여 최소값을 가장 높게 만드는게 이 문제의 요구사항 입니다. 저는 이분 탐색으로 문제를 풀었습니다. 최소 레벨을 탐색에 대상으로 하였습니다. 최소값은 주어진 레벨의 최소값으로 하였고 최댓값은..
문제 출저 https://www.acmicpc.net/problem/15961 15961번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2 www.acmicpc.net 문제 풀이 회전 초밥의 가짓수와 순서가 주어집니다. 이 때 연속한 k개의 초밥 + 이벤트 초밥을 더했을 때 최대한 다양하게 먹은 초밥의 가짓수를 구하는 것이 이 문제의 요구사항입니다. int[] board = new int[n+k] 를 선언합니다. 일차원 정수 배열 board는 초밥의 순서는 담는다. 이 때, 회전 초밥이므로 끝은 처음과 이어..
문제 출저 https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 문제 풀이 n일 동안 하루에 써야할 금액과 인출할 횟수 m이 주어집니다. 인출은 현재 가지고 있는 돈이 하루동안 써야할 금액보다 작을 때 이루어 집니다. 인출을 할 때, 기존에 가지고 있는 돈은 모두 통장에 넣습니다. (즉 초기화 된다는 얘기) 이 때, 한 번에 인출 횟수 m번을 만족하는 최저 금액을 구하는게 문제의 요구 사항 입니다. (제 기준, 문제가 모호하게 적혀있어 이해하는데 시간이 ..
너지살
너지살개발자