-
Kafka 메모Code 2024. 10. 2. 01:06
Kafka 설정역할producer: 메세지를 메세지 브로커의 토픽(Topic)으로 전송, DB에 메세지를 저장consumer: 구독하고 있는 토픽의 메세지를 소비, 즉 현재 서버에 메세지를 받을 사용자에게 웹소켓으로 전송 설치1. kafka 설치2. application.yml 설정spring: kafka: bootstrap-servers: localhost:9092zookeeper: port 2181kafka: port 90923. ProducerConfiguration: ReactiveKafkaProducerTemplate 빈으로 등록ReactiveKafkaProducerTemplate: 메세지 발행하는 과정 추상화 -> Reactor Kafka(KafkaSender)이 메세지 발행Consum..
-
[Spring] Web Socket, STOMP, MongoDB 환경에서 채팅 구현 (1)Code 2024. 9. 26. 17:19
웹소켓 관련 의존성 추가(build.gradle) implementation 'org.webjars:webjars-locator-core:0.59' implementation 'org.webjars:sockjs-client:1.5.1' implementation 'org.webjars:stomp-websocket:2.3.4' Websocket + STOMP config 구성@Configuration@EnableWebSocketMessageBroker@RequiredArgsConstructorpublic class WebSocketConfig implements WebSocketMessageBrokerConfigurer { // WebSocket Stomp로 연결하는 흐름에 대한 제어..
-
-
[BOJ/Python] 백준 9079 - 동전 게임Solve 2024. 9. 20. 09:47
문제더보기문제상우는 재미있는 게임을 생각해냈다. 동전 9개를 아래 그림과 같이 3행 3열로 놓는다. H는 앞면, T는 뒷면을 의미한다.H T TH T TT H H게임의 목적은 이 동전의 모양을 모두 같은 면(H나 T)이 보이도록 하는 것이다. 단, 하나의 동전만을 뒤집을 수는 없고, 한 행의 모든 동전, 한 열의 모든 동전 또는 하나의 대각선 상의 모든 동전을 한 번에 뒤집어야 한다. 그런 식으로 세 개의 동전을 뒤집는 것을 '한 번의 연산'으로 센다. 상우는 이것을 최소 횟수의 연산으로 실행하고 싶어한다. 오랜 시간 생각한 끝에 위의 경우는 두 번의 연산으로 가능하다는 것을 알아냈고, 또, 이것이 최소인 것도 알아내었다.H T T T T T T T TH T T → T T T → T T TT H ..
-
[BOJ/Python] 백준 21315 - 카드 섞기Solve 2024. 9. 20. 09:29
문제더보기문제마술사 영재는 카드 더미를 이용한 마술을 개발하였다.카드들에는 1부터 N까지의 숫자가 적혀있으며 초기 상태에는 1이 맨 위에 있으며 N개의 카드가 번호 순서대로 쌓여있다.영재는 마술을 위해 (2, K) - 섞기를 만들었다.(2, K) - 섞기는 총 K + 1개의 단계로 이루어져있다.첫 번째 단계는 카드 더미 중 밑에서 2K개의 카드를 더미의 맨 위로 올린다.이후 i(2 ≤ i ≤ K + 1)번째 단계는 직전에 맨 위로 올린 카드 중 밑에서 2K - i + 1개의 카드를 더미의 맨 위로 올린다.예를 들어, 카드의 개수가 5개 일 때 초기 상태에서 (2, 2) - 섞기를 하는 과정은 다음과 같다.(괄호 내에서 왼쪽에 있을수록 위에 있는 카드이다.)(1, 2, 3, 4, 5) → (2, 3, 4,..
-
[BOJ/Python] 백준 1548 - 부분 삼각 수열Solve 2024. 9. 20. 09:23
문제더보기문제세 수 x, y, z가 x+y>z, x+z>y, y+z>x의 관계를 만족하면, 세 수는 삼각관계에 있다고 한다.마찬가지로 길이가 N인 수열 B(b[0], b[1], ..., b[n-1])의 모든 b[i], b[j], b[k]가 삼각관계에 있으면 이 수열은 삼각 수열이라고 한다. 이때, i, j, k는 모두 다른 값이다.수열 A가 주어졌을 때, 이 수열에서 적절히 몇 개의 원소를 빼서 이 수열을 삼각 수열로 만들려고 한다. 삼각 수열의 최대 길이를 구하는 프로그램을 작성하시오. 입력첫째 줄에 수열의 크기 N이 주어진다. 둘째 줄에 수열 A에 들어있는 수가 공백을 사이에 두고 주어진다. N은 최대 50이고, A에 들어있는 수는 109보다 작거나 같은 자연수이다. 출력첫째 줄에 가장 긴 부분 삼각..
-
Kafka, RedisCode 2024. 9. 17. 15:09
Message Queue메세지 지향 미들웨어(MOM: Message Oriented Middleware)를 구현한 시스템으로 프로세스 간의 데이터를 교환할 때 사용하는 기술이다.message는 endpoint 간 직접적으로 통신하지 않고, 중간의 queue를 통해 중개된다.Producer: 정보를 제공하는 자Consumer: 정보를 제공받아 사용하려는 자Queue: Producer의 데이터를 임시 저장 및 Consumer에 제공 BrokerMessage Brokerpublisher가 생산한 메세지를 message queue에 저장하고, 저장된 데이터를 consumer가 가져갈 수 있도록 중간 다리 역할을 수행한다. pub/sub 구조로서, 대표적으로 Redis, RabbitMQ 소프트웨어, GCP의 pu..
-
[BOJ/Python] 백준 2470 - 두 용액Solve 2024. 9. 10. 10:46
문제더보기문제KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다.같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다.예를 들어, 주어진 용액들의 특성값이 [-2, 4, -99, -1, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고, 이 ..
-
[BOJ/Python] 백준 20922 - 겹치는 건 싫어Solve 2024. 9. 10. 10:37
문제더보기문제홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열의 길이를 구하려고 한다. $100\,000$ 이하의 양의 정수로 이루어진 길이가 $N$인 수열이 주어진다. 이 수열에서 같은 정수를 $K$개 이하로 포함한 최장 연속 부분 수열의 길이를 구하는 프로그램을 작성해보자.입력첫째 줄에 정수 $N$ ($1 \le N \le 200\,000$)과 $K$ ($1 \le K \le 100$)가 주어진다.둘째 줄에는 ${a_1, a_2, ... a_n}$이 주어진다 ($1 \le a_i \le 100\,000$)출력조건을 만족하는 최장 연속 부분 수열의 길이를 출력한..
-
[BOJ/Python] 백준 21921 - 블로그Solve 2024. 9. 10. 10:33
문제더보기문제찬솔이는 블로그를 시작한 지 벌써 N일이 지났다.요즘 바빠서 관리를 못 했다가 방문 기록을 봤더니 벌써 누적 방문 수가 6만을 넘었다.찬솔이는 X일 동안 가장 많이 들어온 방문자 수와 그 기간들을 알고 싶다.찬솔이를 대신해서 X일 동안 가장 많이 들어온 방문자 수와 기간이 몇 개 있는지 구해주자.입력첫째 줄에 블로그를 시작하고 지난 일수 N와 X가 공백으로 구분되어 주어진다.둘째 줄에는 블로그 시작 1일차부터 N일차까지 하루 방문자 수가 공백으로 구분되어 주어진다.출력첫째 줄에 X일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다.만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다.풀이import sysinput..