분류 전체보기 244

그래프 이론 (Graph)

다양한 그래프 알고리즘 - 그래프: 노드 + 간선 ㄴ '서로 다른 개체(혹은 객체)가 연결되어 있다' ㄴ 인접행렬(2차원 배열) - 메모리↑, 시간↓ / 인접리스트(리스트) - 메모리↓, 시간↑ - 그래프 vs 트리 그래프 트리 방향성 방향 그래프 / 무방향 그래프 방향 그래프 순환성 순환 / 비순환 비순환 루트 노드 존재 여부 X O 노드간 관계성 X 부모-자식 관계 모델의 종류 네트워크 모델 계층 모델 서로소 집합 - 서로소 집합: 공통 원소가 없는 두 집합 - 서로소 집합 자료구조: 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조 ㄴ union: 2개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산 ㄴ find: 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 연산 # ..

알고리즘/정리 2022.07.18

백준 11657: 타임머신 (Python)

https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 처음엔 예제를 봐도 문제가 이해가 잘 안 갔었다. 그래서 관련 글들을 찾아보다가,, 벨만-포드 알고리즘이라는 것을 알았다. 이 문제는 음수 간선이 존재하기 때문에 사이클을 순환할수록 가중치가 감소하는 경우가 발생한다. 따라서 일반적인 다익스트라 알고리즘으로 풀 수 없고, 벨만-포드 알고리즘으로 풀어야 한다. 예제2를 보면 사이클을 계속 ..

알고리즘/백준 2022.07.18

백준 1504: 특정한 최단 경로 (Python)

https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 반드시 통과해야만 하는 정점이 있기 때문에 1 -> v1 -> v2 -> n 1 -> v2 -> v1 -> n 다익스트라를 세번(1번 출발, v1 출발, v2 출발) 돌려서 두 값 중에 최소값을 찾아주면 된다 처음에 실패해서 찾아보니까 값을 세번 더하기 때문에 무한값을 줄여주면 된다고 해서 줄였는데 (1e9 -> 1e8) 여전히 틀림,,,, 자세히 보니..

알고리즘/백준 2022.07.12

백준 1753: 최단경로 (Python)

https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net import heapq import sys input = sys.stdin.readline INF = int(1e9) v, e = map(int, input().split()) k = int(input()) graph = [[] for i in range(v+1)] distance = [INF] * (v+1) for _ in range(e): x, y, w =..

알고리즘/백준 2022.07.12

AWS 기반 주차 관리 시스템 (3) 코드

https://sssbin.tistory.com/188 설정 에 있다. S3 버킷에 사진을 업로드하고 carRecog/request 토픽에 message를 publish 2. index.js (람다코드) var AWS = require('aws-sdk'); var iotdata = new AWS.IotData({ endpoint: '엔드포인트', }); var client = new AWS.Rekognition(); var bucket = '버킷 이름'; exports.handler = async function (event) { var photo_target = event.image + '.jpg'; const params = { Image: { S3Object: { Bucket: bucket, Nam..

AWS 기반 주차 관리 시스템 (2) Lambda 설정

https://sssbin.tistory.com/187 AWS 기반 주차 관리 시스템 (1) AWS IoT Core mqtt를 이용하여 간단한 AWS 기반 주차 관리 시스템을 만들어보고자 한다. camera.js -> 번호판 이미지를 S3에 업로드하고 request 토픽에 publish 하고 이때 람다함수가 호출되어 rekognition 진행 후 detect 토 sssbin.tistory.com 1. IAM 계정에서 역할 만들기 2. 람다 함수 만들기 3. AWS IoT > 메시지 라우팅 > 규칙 > 규칙 생성 4. 람다함수에 트리거 추가 camera.js -> carRecog/request 토픽에 publish 하면 람다에서 이 메시지를 읽기 위해 규칙 쿼리를 SELECT * FROM 'carRecog..

AWS 기반 주차 관리 시스템 (1) AWS IoT Core

mqtt를 이용하여 간단한 AWS 기반 주차 관리 시스템을 만들어보고자 한다. camera.js -> 번호판 이미지를 S3에 업로드하고 request 토픽에 publish 하고 이때 람다함수가 호출되어 rekognition 진행 후 detect 토픽에 publish 하면 manage.js -> detect 토픽에 subscribe 하고 받은 메시지를 출력한다. 시스템을 만들기 위해 AWS IoT Core을 이용했다. 1. AWS IoT > 관리 > 사물 > 사물 생성 정책 설정은 일단 건너뛰고 사물 생성하면 인증서 키 다운로드 창 나오는데 모두 다운 받기 이때 무조건 다운받아야 함!!!!!!!! ⭐️⭐️⭐️ 만든 사물 ARN 복사 2. AWS IoT > 보안 > 정책 > 정책 생성 정책 효과에 iot:C..

AWS EC2 - MQTT 이용하기

★ MQTT Message Broker 만들기 1. EC2 인스턴스 생성 (우분투로 함) 후 접속 - 인바운드 규칙 추가: 사용자지정 TCP, TCP, 1883, 0.0.0.0/0 2. mosquitto 설치 $ sudo apt install mosquitto $ sudo apt install mosquitto-clients 3. mosquitto 실행 $ sudo systemctl start mosquitto $ sudo systemctl enable mosquitto 4. pub & sub $ mosquitto_sub -d -t 토픽이름 $ mosquitto_pub -d -t 토픽이름 -m "메시지" -> 창 두개 띄워서 한쪽에서 sub 먼저 하고 다른쪽에서 pub ★ MQTT 사용해서 File Co..

Amazon Rekognition 이미지에서 텍스트 감지 (nodejs)

https://docs.aws.amazon.com/ko_kr/rekognition/latest/dg/text-detecting-text-procedure.html 이미지에서 텍스트 감지 - Amazon Rekognition 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오. docs.aws.amazon.com 1. AWS에서 IAM 사용자 만들기 - AWS 자격 증명 유형 선택: 액세스 키, 암호 - 콘솔 비밀번호 설정하기 - 정책 추가: AdministerAccess, AmazonRekognitionFullAccess, AmazonS3ReadOnlyAccess *** 마지막에 new_user_..

Python/파이썬 - Google TTS(Text to Speech) 사용하기

모듈 설치 pip install gtts "안녕하세요" 라고 말하는 음성 파일이 tts.save('path') 안의 경로에 저장된다. from gtts import gTTS def speak(text): tts = gTTS(text=text, lang='ko') tts.save('./hello.mp3') speak("안녕하세요.") 이미 저장되어 있는 텍스트 파일을 읽어서 음성 파일로 저장한다. from gtts import gTTS # 파일 경로 textpath = './test.txt' # 파일 읽기 with open(textpath, mode='r', encoding='UTF-8') as text: script = text.read() # 개행 문자 제거 script.replace('\n', '')..