본문 바로가기

전체 글

(351)
[RabbitMQ] RabbitMQ의 이해 1. RabbitMQ 란? AMQP를 구현한 오픈 소스 메시지 브로커 소프트웨어로 Publisher(Producer)로부터 메시지를 받아 Consumer에게 라우트하는 것이 주된 역할이다. 이를 이용하면 작업 큐, 발행 및 구독, 라우팅, 주제, 원격 프로시저 호출 등의 모델을 구현할 수 있다. 2. RabbitMQ component Producer (Publisher) Consumer Queue Exchange Binding Producer는 메시지를 생성하고 발송하는 주체이다. 이 메시지는 Queue에 저장이 되는데, 주의할 점은 바로 Queue에 접근하는 것이 아니라 Exchange를 통해서 Queue에 접근하게 된다. Consumer는 메시지를 수신하는 주체이다. Consumer는 Queue에 직..
[AMQP] AMQP의 이해 AMQP를 이해하기 전에 먼저 MQ가 무엇인지 부터 알아야 한다. 1. MQ 란? MQ(Message Queue) 란 메시지 기반의 미들웨어로 메시지를 이용하여 여러 애플리케이션, 시스템, 서비스들을 연결해주는 솔루션이다. 즉, 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할 때 사용하는 통신 방법이다. 더 큰 개념으로는 메시지 지향 미들웨어(Message Oriented Middleware: MOM)를 구현한 시스템을 의미한다. MOM은 비동기 메시지를 사용하는 응용 프로그램 간의 데이터 송수신을 말한다. 2. AMQP 그러면 AMQP는 무엇일까 ? 인스턴스가 데이터를 서로 교환할 때 사용하는 방법이다. MQ를 오픈 소스에 기밚나 표준 프로토콜이 AMQP 이며 이 자체가 프로토콜을 의미하고 있다..
[BOJ] 15663. N과 M (9) https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 입력 리스트를 오름차순으로 리스트에 저장 - 백트래킹 for문 돌면서 해당 원소를 append - 원소의 중복되는 수열 때문에, 이전 인덱스를 기억하고 선택하면 패스하도록 함 - 재귀에서 m개를 선택하면 종료, print 2. 시간복잡도 - N^N (N = 7) : 가능 3. 자료구조 - 배열 : 입력 int[] - 백트래킹 : 재귀 """ 2. 정답코드 ..
[BOJ] 15657. N과 M (8) https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 입력 리스트를 오름차순으로 리스트에 저장 - 수열의 같은 원소의 중복을 허용하기 때문에 방문기록 x - 결과 리스트에 담은 원소들은 오름차순이어야 함. -> 원소를 넣을 때마다 점차적으로 증가시켜줘야함. - 백트래킹 for문 돌면서 해당 원소를 append - 재귀에서 m개를 선택하면 종료, print 2. 시간복잡도 - N^N (N = 7) : 가..
[BOJ] 15656. N과 M (7) https://www.acmicpc.net/problem/15656 15656번: N과 M (7) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 입력 리스트를 오름차순으로 리스트에 저장 - 수열의 같은 원소의 중복을 허용하기 때문에 방문기록 x - 백트래킹 for문 돌면서 해당 원소를 append - 재귀에서 m개를 선택하면 종료, print 2. 시간복잡도 - N^N (N = 7) : 가능 3. 자료구조 - 배열 : 입력 int[] - 백트래킹 : 재귀 """ 2. 정답코드 입력 예제(1)..
[BOJ] 15655. N과 M (6) https://www.acmicpc.net/problem/15655 15655번: N과 M (6) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 입력을 리스트로 받고 오름차순으로 정렬 - 백트래킹으로 for문을 돌면서 stack없는 문자를 append, 방문기록 체크 - 수열이 중복되지 않도록 하고, 직전 문자보다 크게 사전 순으로 증가 - 재귀에서 m개를 선택 시 종료, print 2. 시간복잡도 - N! (N
[BOJ] 15654. N과 M (5) https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 입력을 리스트로 저장 - 백트래킹 재귀함수 안에서, 리스트 안을 for문으로 돌면서 숫자 선택, 방문기록 체크 - 재귀함수에서 M개를 선택할 경우 print 2. 시간복잡도 - N! : 가능 3. 자료구조 - 재귀 - 배열 : 결과 int[] """ 2. 정답코드 입력 예제(1) 3 1 4 5 2 출력 예제(1) 2 4 5 입력 예제(2) 4 2 9..
[BOJ] 15652. N과 M (4) https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 백트래킹 재귀함수 안에서, for문 돌면서 숫자 선택 - 배열의 첫 번째, 두 번째 숫자가 중복이 가능하기 때문에 방문기록을 할 필요가 없음 - 재귀함수에서 M개를 선택할 경우 print - 비내림차순으로 출력해야 하므로 두 번째 숫자는 첫 번째 숫자보다 작으면 안되기 때문에 점차적으로 커져야함 2. 시간복잡도 - 중복 허용 N^N ( N