전체 글 112

[백준][JAVA] 9461 - 파도반 수열 - DP

📌 문제백준 | 파도반 수열 | SILVER 3 | DPhttps://www.acmicpc.net/problem/9461 📌 문제 탐색하기정삼각형이 나선(오른쪽 시계방향)으로 계속 돌면서 모양을 만듬  📌 알고리즘P(N)이 구현되는 모습이, 그 전의 값들로부터 영향을 받아 구현되기 때문에 이 문제는 ‘DP’ 알고리즘으로 풀 수 있다.이를 구현하기 위해, Memoization 을 활용한다.example) P(N) = 1, 1, 1, 2, 2, 3, 4, 5, 7, 9N012345678P(N)011122345       P[1] + P[5]P[2] + P[6]P[3] + P[7]즉, P(N) = P(N-5) + P(N-1) (단, N>=5)  📌 코드 설계하기TEST 입력MEMOIZATION 기법을 ..

알고리즘/백준 2024.11.26

[백준][JAVA] 11055 - 가장 큰 증가하는 부분 수열 - DP

📌 문제백준 | 가장 큰 증가하는 부분 수열 | SILVER 2 | DPhttps://www.acmicpc.net/problem/11055 📌 문제 탐색하기증가하는 부분 수열 중, 합이 가장 큰 것 구하기ex) A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8}⇒ 1,2,50,60 = 113⇒ 3, 5, 6, 7, 8 = 29그러므로 가장 큰 증가하는 부분 수열은 113  📌 알고리즘부분수열을 구해야하는데, A의 크기가 1,000까지 가능만약 for문을 통해 돌 경우, 1000 * (1000 - i) (i = 자신의 위치)시간이 1초제한이므로, 1000000 - 1000i라 가능할 것 같긴한데.. => 너무 비효율적인 것 같아서 PASS어쨌든, 최대 합인 부분수열을 골라야하므로, ..

알고리즘/백준 2024.11.25

[백준][JAVA] 13164 - 행복 유치원 - 그리디

📌 문제백준 | 행복 유치원 | level5 | 그리디https://www.acmicpc.net/problem/13164  📌 문제 탐색하기N명의 원생들을 키 순서대로 줄을 세우기총 K개의 조로 나누려고 함각 조에는 원생이 적어도 1명 있어야함같은 조에 속한 원생들은 서로 인접해 있어야함조별로 인원수가 같을 필요는 없음조마다 티셔츠를 맞추는 비용 = 가장 키가 큰 원생 - 키가 작은 원생출력 : 최대한 비용을 절약하기 위한 최소 비용 📌 알고리즘원생의 수 N은 최대 300,000까지 가능K는 N이하문제에서 이미 키 순서대로 작성됏으므로 Arrays.sort = O(NlogN)은 필요 x출력값을 최소로 만들기 위해선, 처음부터 각 조의 가장 키가 큰 원생과 작은 원생의 차이가 작도록 구성해야함 ⇒ 그..

알고리즘/백준 2024.11.21

[프로그래머스][JAVA] 전력망을 둘로 나누기 - DFS/BFS/완전탐색

📌 문제프로그래머스 | 전력망을 둘로 나누기 | level2 | DFS/BFS/완전탐색https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  📌 문제 탐색하기전선들중 하나를 끊어서 전력망 네트워크를 2개로 분할두 전력망이 갖게되는 송전탑의 수 비슷하게 맞추는 것을 목표입력 :송전탑의 수 n전선 정보 wires출력 : 두 전력망이 가지고 잇는 송전탑의 개수 차이 (절댓값) 📌 코드 설계하기2차원 배열로, 먼저 송전탑의 전력망들을 구현어떤 전선을 끊으면 최대한 비슷하게 되는지를 구현해야하므로완전..

한국어 임베딩 모델 SOTA 분석

1. 한국어 임베딩 모델이란텍스트, 이미지, 오디오와 같은 데이터를 고차원 공간에서 저차원 벡터로 변환하는 기계 학습 모델컴퓨터는 텍스트를 이해할 수 없으므로, 텍스트 데이터를 벡터 형태로 변환해야 기계 학습에서 사용할 수 있음유사한 의미를 가진 텍스트는 임베딩 공간에서 서로 가까운 위치에 배치임베딩 모델의 작동 방식학습 데이터 : 대규모 텍스트 데이터로 모델을 학습시켜 언어의 통계적 특성을 파악학습 방법 : 단어 간의 연관성을 기반으로 벡터를 학습최근에는 딥러닝 기반의 Transformer 모델(BERT, GPT 등)을 사용해서 더 정교한 문맥 정보를 포함출력 결과 : 각 텍스트는 다차원 벡터로 표현되며, 벡터의 크기와 방향의 텍스트의 의미를 반영하며, 벡터 간 연산을 통해 유사성을 계산2. SOTA란..

AI 2024.11.21

벡터 DB 분석

1. Vector DataBase란벡터 데이터베이스는 고차원 데이터의 효율적인 저장, 검색, 및 관리에 특화된 데이터베이스입니다.전통적인 데이터베이스가 정형화된 데이터처리에 초점을 맞춘 반면, 벡터 데이터베이스는 비정형 데이터(이미지, 텍스트, 음성 등)를 수치화한 벡터 데이터를 다룹니다.2. Vector DataBase 특징비정형 데이터를 벡터로 변환시, 데이터는 다차원 공간에서 좌표로 표현됩니다. 이러한 벡터는 데이터 간의 유사도를 측정하거나, 패턴을 분석하는 데 사용됩니다.최적화된 벡터 스토리지 : 벡터 데이터베이스는 고차원 벡터의 저장 및 검색을 위해 최적화 과정 진행, 이를 위해 특수한 데이터 구조와 알고리즘 구현능숙한 유사 검색 : 유사도 검색에 매우 탁월하며, ‘코사인 유사도’ 및 ‘유클리드..

AI 2024.11.20

[백준][JAVA] 18230 - 2XN 예쁜 타일링 - 그리디

📌 문제백준 | 2XN 예쁜 타일링 | level1 | 그리디https://www.acmicpc.net/problem/18230 📌 문제 탐색하기화장실 바닥은 2 X N 크기의 격자로 표현된다.2X1 A개, 2X2 B개 존재화장실 바닥의 예쁨 = 각 타일들의 예쁨의 합예쁨이 최대로 타일링을 하고 싶음출력값 = 예쁨의 최댓값은 얼마일까 ? 📌 알고리즘2X1 타일과 2X2 타일들을 어떻게 배치하느냐에 따라 2XN 타일을 만들 수 있음이때, 2X1은 돌려서 1 X 2도 될 수 있음그러므로 총 가능한 경우의 수가 2X1, 2X2, 1X2 3가지임그러므로 n을 분리해서 나올 수 있는 경우를 먼저 찾고, 그 값에 맞춰서 타일들 중 예쁨의 크기가 큰 것들 부터 합산해주기 시작한다.이때, 각 단계에서 ‘최적해’를..

알고리즘/백준 2024.11.20

[프로그래머스][JAVA] 소수 찾기 - dfs

📌 문제프로그래머스  | 소수찾기 | level2 | 완전탐색https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  📌 문제 탐색하기출력 : 소수를 몇개 만들 수 있는지 알아내기각 종이에 적힌 숫자 배열 numbers에 따라, 소수 몇개 만드는지 확인하기ex) 17 = 7, 17, 71 📌 알고리즘numbers를 먼저 각 숫자로 배열로 분리한 후에완전탐색(dfs)를 통해 깊이우선탐색으로 숫자를 활용한 경우들의 모두 찾고numbers가 1~7까지의 길이이기에 아무리 많은 완전탐색이더라도, 7!..

[프로그래머스] 피로도-level2-dfs

📌 문제프로그래머스 | level2 | 완전탐색https://school.programmers.co.kr/learn/courses/30/lessons/87946#qna 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  📌 문제 탐색하기최소 필요 피로도 : 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도소모 피로도 : 던전을 탐험한 후 소모되는 피로ex) 최소 필요 피로도 80, 소모 피로도 20 인 던전 ⇒ 사용자의 피로도 ≥ 80 & 던전 이후 피로도 - 20하루 한번씩 탐험할 수 있는 던전 여러개 📌 알고리즘유저가 이 던전을 최대한 많이 탐험하려고 함 ⇒ 완전탐색 BFS/DFS유저..

LoRA, QLoRA, LoRA-FA 분석

0. LoRA💡 Fine-Tuning사전에 훈련된 모델을 특정 작업에 맞게 추가로 훈련시키는 방법적은 비용으로도 큰 모델을 효율적으로 훈련시킬 수 있는 장점 제공 💡 PEET (Parameter-Efficient Fine-Tuning)적은 양의 매개변수를 학습하는 것 만으로도 빠른 시일 안에 새로운 문제를 비슷한 성능으로 풀 수 있게 하기 위한 미세조정(Fine-Tuning) 방법론모델 전체를 미세조정 하는 것보다, 훨씬 적은 계산 자원과 데이터가 필요함다양한 태스크나 문제에 대해 모델을 빠르게 적용하거나, 실험하려는 연구자나 개발자에게 매우 유용함💡 Fully Fine-Tuning이 힘든 이유  LLM의 weight는 최소 1.5GB ~ 3GBModel을 GPU에 로드하는 것만 해도, 엄청난 GP..

AI 2024.11.18