[프로젝트] 2. API Rate Limiter 도입 - Spring Cloud Gateway
·
Project/Optimization
트래픽 제한을 고려하게 된 이유오늘은 지난번에 소개 드린 "올봄" 프로젝트의 2. API Rate Limiter 도입을 진행해보려고 한다.이번에 개선할 프로젝트인 AI 기반 장년층 라이프 케어 서비스 "올봄"에서는 챗봇, 지도, ToDo, 게임, 일자리 총 5가지 기능이 있다.이 중에서도 챗봇 기능에선  Langchain을 사용하여 LLM의 한 종류인 GPT-4 기반의 챗봇을 제공한다.사용자들은 LLM 기반의 챗봇을 통해 일상 대화, 노인 편의 기능 및 유용 정보를 제공 받을 수 있다.   올봄은 장년층의 삶에 활기를 불어넣자는 목적으로 기획된 공익 서비스로, 현재까진 별도의 비즈니스 모델이 없다.서비스 규모가 좀 더 커진다면 장년층을 대상으로 한 수익화 방안을 모색할 계획이 있지만, 지금까지는 수익화 ..
[프로젝트] 1-2. 성능 개선 - Redis Geospatial 도입 및 PostGIS와 비교
·
Project/Performance Improvement
개요오늘은 지난번에 소개 드린 "올봄" 프로젝트의 1. 성능 개선을 진행해보려고 합니다.성능을 개선하는 방법에는 데이터베이스 쿼리 튜닝, 비즈니스 로직 개선 등 다양한 방법이 있습니다.그 중에서도 이번 성능 개선편에서는 Redis를 활용한 캐시 도입을 통해 성능 최적화를 이루는 방법에 대해 소개해보려 합니다. Redis에 대한 자세한 설명은 아래 링크에 첨부해두었습니다. https://esssun.tistory.com/142 Redis란?Redis란?Redis는 key-value 구조의 비정형 데이터를 저장하고 관리하기 위한 (오픈소스) 인메모리 데이터 저장소이다.NoSQL DBMS로 분류되며 동시에 Memcached와 같은 인메모리 솔루션으로 분류할 수 있다.Desssun.tistory.com 이번에 ..
[백준] 9934 : 완전 이진 트리 (파이썬)
·
Algorithm/Recursion
트리, 재귀 문제https://www.acmicpc.net/problem/9934접근 방식31 6 4 3 5 2 7 주어진 입력과 그래프의 형태를 비교해보면, 그래프를 중위 순회한 결과가 입력 배열로 주어졌다는 사실을 알 수 있다.따라서, 중위 순회 결과를 기반으로 트리를 재구성한 후, 각 깊이에 위치한 노드들을 출력해주면 된다.💡 풀이코드 (성공)import sys n = int(sys.stdin.readline())arr = list(map(int, sys.stdin.readline().split()))graph = [[] for _ in range(n)]depth = 0def recursive(start, end, depth): if start >= end : return mid = ..
[백준] 1913 : 달팽이 (파이썬)
·
Algorithm/Simulation
구현 문제https://www.acmicpc.net/problem/1913접근 방식중심 좌표로부터 시작한다.특정 좌표로부터 위, 오, 아, 왼 순으로 이동한다.이때, 위쪽과 아래쪽 방향으로 이동할 때, 이동해야할 길이(i)를 전보다 1 증가시켜준다. if j == 0 or j == 2: i += 1이동해야 할 길이(i)만큼 이중 for문을 돈다.현재 방향(j)으로 좌표를 한 칸 이동한 후, 해당 그래프의 좌표에 cnt를 기록해준다.for _ in range(i): if cnt == k: ans.append(y + 1) ans.append(x + 1) if cnt >= n * n: return # while문 탈출 조건 지정 cnt += 1 y += dy..
[백준] 11000 : 강의실 배정 (파이썬)
·
Algorithm/Greedy
스위핑, 우선순위큐, 그리디 문제https://www.acmicpc.net/problem/11000💡 풀이코드 (성공 - 스위핑)import sys import heapq n = int(sys.stdin.readline())lecture = []for _ in range(n): a, b = map(int, sys.stdin.readline().split()) heapq.heappush(lecture, (a, 1)) # start heapq.heappush(lecture, (b, 0)) # end cnt = 0ans = 0while lecture: a, b = heapq.heappop(lecture) if b == 1: cnt += 1 else: ..
[백준] 2293 : 동전 1 (파이썬)
·
Algorithm/DP
DP 문제https://www.acmicpc.net/problem/2293💡 풀이코드 (실패 - 메모리 초과)import sys n, k = map(int, sys.stdin.readline().split())coin = [0] for _ in range(n): num = int(sys.stdin.readline()) coin.append(num) def sol(n, k, coin): dp = [[0] * (k + 1) for _ in range(n + 1)] for i in range(n + 1): dp[i][0] = 1 for i in range(1, n + 1): for j in range(1, k + 1..
_은선_
'분류 전체보기' 카테고리의 글 목록