분류 전체보기 54

[카카오 코테 2022 | python] 주차 요금 계산

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/92341level2 Q1) 문제를 어떻게 이해했나요?A1)입력 → fees: [기본 시간, 기본 요금, 단위 시간, 단위 요금], records: "HH:MM 차량번호 IN/OUT" 형태의 리스트 출력 → 차량 번호 오름차순으로, 각각의 최종 주차 요금 리스트 반환 규칙 → 입차 후 출차 기록이 없으면 23:59에 출차된 것으로 간주, 누적 주차 시간 계산 후: 기본시간 이하면 기본요금, 초과시간은 단위시간으로 올림 계산하여 요금 부과Q2) 문제를 어떻게 풀 예정인가요?A2)단계 1: 문자열을 분리해서 시각/차량번호/상태로 파싱단계 2: 입차 시각은 저장하고, 출차 시 총 누적 시간을 ..

Algorithm 09:16:55

[RAG] 3. Sparse Retrieval와 Dense Retrieval (+Ensemble, Reranker)

Sparse Retrieval전통적인 키워드 기반 검색 방식으로 빠르고 직관적이며 적은 자원이 필요하지만, 의미 기반 검색이 어렵다는 한계가 있음.희소 벡터 형태로 표현하여 검색 수행 희소 벡터: 전체 어휘 사전의 크기에 해당하는 차원을 가진 벡터, 해당 문서나 쿼리에 등장하는 단어에 해당하는 위치만 1이고 나머지는 모두 0인 형태를 갖는다.TF-IDF: 특정 단어가 문서에 나타나는 빈도와(TF) 그 단어가 몇 개의 문서에서 나타나는지(IDF)를 반영하여 단어의 중요도를 계산합니다. 여기서 자주 나타나면서도 문서 집합 전체에 드물게 나타나는 단어가 높은 가중치를 받음.TF: 단어 t의 문서 d 내 등장 횟수 / 문서 d의 총 단어 수IDF: log(전체 문서 수 / 단어 t가 등장하는 문서 수)문서 길이..

NLP | LLM 01:11:39

[LangChain] 2. LangChain과 RAG에 대한 모든 것

[LangChain] 시리즈 1편. LangChain의 개념과 작동과정 등을 먼저 읽어보시는 걸 추천드립니다! [LangChain] 1. LangChain의 모든 것LangChainLLM을 활용한 애플리케이션 개발을 위한 오픈소스 프레임워크LLM과의 상호작용, 메모리 관리, 체인 실행, 데이터 처리 등을 통해 복잡한 AI 애플리케이션을 효율적으로 구축할 수 있음.LangGrwavetoai.com RAG사용자가 질문을 입력하면 연관된 문서를 검색한 후, 검색 결과를 바탕으로 응답을 생성하는 방식RAG에 대한 더 자세한 내용은 아래 링크로!🔥 1. RAG와 LangGraph의 등장과 동작과정RAG (Retrieval-Augmented Generation)LLM의 한계를 극복하기 위해 '지식 검색'과 '언..

NLP | LLM 00:28:10

[카카오 코테 2018 | python] 파일명 정렬

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17686level2문자, 숫자 판별 함수 Q1) 문제를 어떻게 이해했나요?A1) 파일명은 [HEAD][NUMBER][TAIL] 형태 정렬 기준은 다음과 같아요: 1. HEAD를 대소문자 구분 없이 정렬 (사전 순) 2. HEAD가 같으면 NUMBER를 정수로 비교해 정렬 3. 둘 다 같으면 입력 순서를 유지 (Stable Sort) Q2) 문제를 어떻게 풀 예정인가요?A2)1. 파일명을 HEAD, NUMBER, TAIL로 나누기2. HEAD는 소문자로 변환해서 비교3. NUMBER는 정수로 변환해서 비교4. 정렬 후 원래 문자열 반환 💫 최적화된 코드 (정규표현식 안쓰고, 하나씩 순회..

Algorithm 2025.06.23

[카카오 코테 2019 | python] 인턴십크레인 인형뽑기 게임 ✅

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/640612019 카카오 개발자 겨울 인턴십크레인 인형뽑기 게임 Q1) 문제를 어떻게 이해했나요?A1) 크레인을 좌우로 움직이며 인형을 집어 바구니에 쌓는다. 같은 인형이 바구니에 연속으로 두 개 쌓이면 터진다. 인형이 터질 때마다 2개 사라지므로 2점을 얻는다. 인형은 가장 위에 있는 것만 집힌다.Q2) 문제를 어떻게 풀 예정인가요?A2) moves: 크레인을 몇 번째 열에서 작동시킬지 알려주는 리스트.크레인 작동 시: 해당 열의 맨 위 인형을 찾는다. 인형을 바구니(stack)에 넣는다. 바구니의 top 2개가 같으면 pop해서 사라진다 → 점수 +21. 빈 바구니(basket = []..

Algorithm 2025.06.23

[백준] Input 처리 방법

✅ 기본 구조import sysinput = sys.stdin.readline이걸 써야 백준에서 시간 초과 방지 가능해요! 📘 예제 1: 한 줄에 하나씩 숫자 여러 개 입력 받기입력 5n = int(input())print(n) # 5❗️주의: input()은 줄바꿈 제거되지만, sys.stdin.readline()은 '\n'이 포함되기 때문에 strip()을 꼭 써야 해요! 📘 예제 2: 한 줄에 숫자 여러 개 1 2 3 4 5arr = list(map(int, input().split()))print(arr) # [1, 2, 3, 4, 5] 📘 예제 3: 여러 줄 입력 (첫 줄에 개수, 이후 줄마다 숫자)3102030n = int(input())for _ in range(n): num..

[백준 15649 | python] N과 M (1) (백트레킹)

문제 링크: https://www.acmicpc.net/problem/15649백준 15649번파이썬 Q1) 문제를 어떻게 이해했나요?A1) 1부터 N까지의 수 중에서 M개를 중복 없이 뽑아서 만든 수열을 모두 출력해야 해요.Q2) 문제를 어떻게 풀 예정인가요?A2)DFS(백트래킹)을 사용해 수열을 하나씩 만들어가며 탐색합니다. 이미 선택한 숫자는 visited 배열로 중복 선택을 막습니다. 수열의 길이가 M에 도달하면 출력합니다. 사전 순 출력을 위해 숫자 1부터 N까지 오름차순 탐색을 합니다. def solution(N, M): visited = [False] * (N + 1) def dfs(path): if len(path) == M: print(' '...

Algorithm 2025.06.21

고도화된 RAG: 단순히 검색만으로는 한계가 있다 (Self-RAG, GraphRAG)

전통적인 RAG 기술 👀chunking, query 변형, 검색 알고리즘, re-rank, ... 1️⃣ Self-RAG💫 Self-Reflection (자체 반영)LLM이 기존 RAG의 각 단계에 직접 개입하여 보다 정교한 제어를 수행하는 방식 1) 작동방식검색: 사용자의 질문을 분석하여 외부 데이터 검색이 필요한지 결정(Retrieve=yes 토큰 출력)생성: 검색된 정보가 있으면, 이를 바탕으로 답변관련성 평가: 검색된 문서의 관련성 평가답변 생성: 관련 정보가 있는 문서가 존재할 경우 → 자신의 기존 지식 + 검색 정보 결합한 포괄적인 답변 관련 정보가 있는 문서가 없다면 → 검색된 문서 무시 + 기존 지식 활용한 답변평가: 생성된 답변의 유용성 평가, 필요 ..

NLP | LLM 2025.06.20

RAG & Agent 시스템 성능 검증은 어떻게 할까?

1. RAG 시스템 성능 검증1.1 컴포넌트별 평가 (Component-wise Evaluation)1.1.1 Retrieval 성능 평가지표공식설명측정 방법Precision@KP@K = (관련 문서 수 in top-K) / K상위 K개 중 관련 문서 비율수동 라벨링 또는 자동 판정Recall@KR@K = (검색된 관련 문서 수) / (전체 관련 문서 수)전체 관련 문서 중 검색된 비율완전한 관련성 데이터셋 필요Mean Reciprocal Rank (MRR)MRR = (1/|Q|) Σ (1/rank_i)첫 번째 관련 문서의 평균 역순위여러 쿼리에 대한 평균Normalized DCG (NDCG)NDCG = DCG / IDCG순위를 고려한 누적 이득관련성 점수 기반 (0-3점 등)Hit RateHR@K = ..

NLP | LLM 2025.06.19

[카카오 코테 2018 | python] 비밀지도

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/17681level1프로그래머스Q1) 문제를 어떻게 이해했나요?A1) 주어진 두 지도를 각각 이진수 형태로 변환하고, 각 위치에서 둘 중 하나라도 벽(1)이면 전체 지도에서 벽으로 표시해야합니다.Q2) 어떤 방식으로 풀건가요?A2) OR 연산을 수행하여 둘 중 하나라도 1이면 1이 되도록 처리를 합니다. 그리고, 그 결과를 n자리의 2진수로 변환합니다.2진수 문자열에서 '1' 은 '#'으로 '0'은 ' '으로 치환하여 리스트로 반환합니다. 🔥 내 코드: 2진수를 직접 구하는 함수를 만들었음def num_to_2(n, num): result = "" while num > 0: ..

Algorithm 2025.06.19
728x90