[TIL] 99클럽 코테 스터디 3일차 TIL - 이진탐색 : 백준 1072 게임 문제 풀이 with python
·
카테고리 없음
Today's keyword : 이진탐색 문제설명특정 수의 심사관이 대기자들을 처리할 수 있는 최소 처리 시간을 찾는 문제입니다. 각 심사관마다 한 사람을 처리하는 데 걸리는 시간이 다릅니다. https://school.programmers.co.kr/learn/courses/30/lessons/43238?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제풀이이 문제에서 이진탐색을 위한 조건은 대기자 수를 기준으로 합니다. 주어진 정보가 대기자 수이고, 구해야 하는 값은 모든 대기자 수를 처리하는 시간으로 ' 대기자 수'라는 기준에 맞춰 주어진 mid와 times를 이용해..
[TIL] 99클럽 코테 스터디 2일차 TIL - 이진탐색 : 백준 10561 징검다리 문제 풀이 with python
·
카테고리 없음
Today's keyword : 이진탐색  문제설명주어진 징검다리의 개수에 따라 건너야 하는 수를 최적화하는 문제로, 주어진 징검다리의 개수 n이 있을 때, 1부터 n까지의 수 중에서 가장 많이 건널 수 있는 수를 찾는 것이 목표https://www.acmicpc.net/problem/11561문제풀이이 문제에서 포인트는 두 번째 점프부터는 이전의 점프한 거리보다  1 이상 긴 거리를 뛰어야 한다는 것이다. 최대 징검다리 수를 출력한다고 하면 가장 이상적인 점프 방식은 처음에 한 칸 뛰고, 그 다음 두 칸 뛰고, 그 다음 세 칸 뛰는 식으로 점프하는 거리를 한 칸씩 늘리는 것이다. 징검다리를 건너기 위한 최소한의 수는 한 칸씩 점프 이동거리를 늘린 거리의 합이기 때문에 수식으로 작성하면 N*(N+1)/2..
[TIL] 99클럽 코테 스터디 1일차 TIL - 이진탐색 : 백준 1072 게임 문제 풀이 with python
·
TIL
Today's keyword : 이진탐색 이진탐색이란?   정렬된 배열에서 특정 값을 찾기 위해 반으로 나누면서 탐색해 나가는 알고리즘입니다. 이 방법은 배열이 정렬되어 있어야 사용 가능합니다. 이진탐색 작동원리 1. 초기 설정 : 배열의 시작과 끝 인덱스를 설정 2. 중간 인덱스 계산 : 시작 인덱스와 중간 인덱스 계산 3. 비교 중간 인덱스의 값이 찾고자 하는 값과 같으면 탐색 종료 중간 인덱스의 값이 찾고자 하는 값보다 크면, 끝 인덱스를 중간 인덱스 - 1로 설정하여 왼쪽 절반을 탐색중간 인덱스의 값이 찾고자 하는 값보다 작으면, 시작 인덱스를 중간 인덱스 + 1로 설정하여 오른쪽 절반을 탐색4. 반복 : 절반으로 나누면서 시작 인덱스가 끝 인덱스 초과할 때까지 반복 문제설명 형택이가 게임을 몇 ..
시계열에서 변화된 지점 찾기 : Change Point Detection (CPD) 기법
·
데이터분석
이번에 소개해드릴 내용은 시계열이나 신호 데이터에서 변화를 찾는 기법인 Change point detection입니다. 진행했던 프로젝트에서 공정 과정에서 유의미한 피처를 도출하기 위한 하나의 작업으로 Segmentation을 진행했고, Segmentation을 하기 위해 Change point detection 기법을 활용했습니다. 최종 목표는 유의미한 피처 도출이었고, 데이터의 변화가 발생한 구간을 나눠 보다 유의미한 피처를 도출하고자 하였습니다. 해당 글에서는 Change point detection 이 무엇인지, 어떻게 활용되는지, 알고리즘에는 어떤 것들이 있는지 간단한 실습과 함께 설명하고자 합니다. 1. CPD 개요  CPD(Change Point Detection)이란 시계열 데이터의 특성(..
[LLM] GCP 이용해 LLM 환경 구축하기
·
MLOps
ChatGPT의 등장으로 대규모 언어 모델, LLM(Large Language Model)이 주목받으면서 LLM 관련 공모전과 사이드 프로젝트가 점차 많아지고 있다. LLM에 대한 관심은 DACON 기준 참여인원수를 통해서도 확인할 수 있다. 정형데이터를 이용한 회귀와 분류모델 관련 공모전에도 보통 1,000~1,500여 명 정도 참가하는데, 2024년 진행했던 '도배 하자 질의 응답 처리 : 한솔데코 시즌2 AI 경진대회'에는 1,454명이 참여하였고, '재정정보 AI 검색 알고리즘 경진대회'도 1,060명이 참여하였다. 이러한 수치는 새로운 기술에 대한 관심이 그만큼 뜨겁다는 것을 보여준다.  올해 LLM에 관심이 생겨 위에 언급된 두 공모전에 참가하게 되었는데, 그때마다 LLM을 Fine-tunin..
삶의 지도, 인생 가치를 찾아 나서는 여정이 담긴 지도
·
Personal
왜 삶의 지도일까?  글또를 처음 접하게 된 건 데이터 분석가라면 한 번씩 들렸을 메타몽이 그려진 변성윤 님의 블로그였습니다. 프로젝트를 하면서 보는 블로그 글은 정보전달이 목적이기 때문에 내가 만족하는 정보만 충족되면 더 이상 볼 이유가 없어집니다. 하지만 종종 ‘와 어떻게 이렇게 정리를 하지? 이 깊이는 도대체 어떻게 얻는 거지?’ 생각이 드는 글이 주는 정보보다 사람이 궁금해지는 글들이 있습니다. ‘나도 이렇게 정리하고 싶다~’라고 생각이 들게 만드는 글들을 보며 혹여 이 사람의 발자취를 따라가면 나도 이렇게 될 수 있을까 싶어 다른 글들을 뒤적이다 글또를 발견하게 되었습니다.  글또 커뮤니티를 만들고 진행한다는 것을 처음 봤을 때도 ‘와~ 역시 대단한 사람이었네~’ 싶었고, 글을 쓰는 게 도움이 ..
[데이터시각화] 지수표현(+e)된 축 눈금 일반 숫자 형식으로 바꾸기
·
데이터분석
데이터를 시각화하다가 y축 눈금이 지수표현(과학적 표기법)으로 되어 있으면 보기가 불편하다. 해당 표기법을 일반 숫자 형식으로 변형하여 시각화하는 방법은 matplotlib.pyplot 모듈의 ticklabel_format 함수를 이용하면 된다. (상세 페이지 : matplotlib.pyplot.ticklabel_format()) matplotlib.pyplot.ticklabel_format(*, axis='both', style='', scilimits=None, useOffset=None, useLocale=None, useMathText=None) - axis : 포멧할 축 설정, {'x', 'y', 'both'} - style : 일반 숫자 형식 / 과학적 표기법, {'sci', 'scientif..
[데이터시각화] 시계열 그래프 위에 결측정보 text로 겹치지 않게 표시하기
·
데이터분석
시계열 데이터를 다루다가 데이터가 지속적으로 수집되지 않고 중간 중간 결측이 발생하고 있음이 발견되었다. 결측이 발생하게 되면 모델 학습과 운영에 있어서 크리티컬한 문제기 때문에 결측을 채우는 것이 맞는지, 결측을 어떻게 채워야 하는지, 모든 값에 대해서 채우는 것이 맞는지 고민이 필요하다. 결측에 대해서 단순히 전체 데이터의 결측 개수나 비율을 계산하여 판단할 수도 있겠지만, 시계열 데이터에서는 데이터의 연속성이 중요하기 때문에 데이터의 결측이 연속적으로 얼마나 지속되었는지 살펴 볼 필요가 있다. 그래서 결측에 대해 직관적으로 살펴보기 위해 시계열 그래프를 그려 살펴보고자 했고, 결측이 얼마나 지속되었는지에 따라 결측 보간방법을 다르게 하기 위해 특정 시간 이상 결측이 지속되는 경우는 따로 표시했다. ..
[LLM] Fine-tuning시 early stopping 적용하기
·
AI
1. Early Stopping 사용 배경 LLM 모델을 fine-tuning 하는 과정에서 loss가 줄어들다가 다시 증가해서 2 epoch가 모두 돌아갔을 때 오히려 성능이 떨어지고 있었다. 이럴 때, 기존 딥러닝 모델 학습 시 early stopping을 콜백 함수를 넣어 지정한 early_stopping_patience 가 지나면 학습을 멈추게 했었는데 사전학습된 모델을 불러와 fine-tuning할 때도 해당 기능을 쓸 수 있는지 궁금했다. LLM 모델을 fine-tuning할 때 쉽게 사용하는 클래스가 허깅페이스의 SFTTrainer와 Trainer 클래스인데 Trainer 클래스에서는 EarlyStoppingCallback 함수를 지원하지만 SFTTrainer에서는 지원하지 않는다. 2. T..
[SQL] 프로그래머스 고득점 KIT GROUP BY 문제 정답
·
Algorithm
즐겨찾기가 가장 많은 식당 정보 출력하기 SELECT B.FOOD_TYPE, B.REST_ID, B.REST_NAME, B.FAVORITES FROM ( SELECT FOOD_TYPE, MAX(FAVORITES) AS MAX_FAVORITE FROM REST_INFO GROUP BY FOOD_TYPE ) A INNER JOIN REST_INFO B ON A.FOOD_TYPE = B.FOOD_TYPE AND A.MAX_FAVORITE = B.FAVORITES ORDER BY FOOD_TYPE DESC; 조건에 맞는 사용자와 총 거래금액 조회하기 SELECT B.USER_ID, B.NICKNAME, A.PRICE_SUM FROM ( SELECT WRITER_ID, SUM(PRICE) AS PRICE_SUM ..