분류 전체보기 50

[백준 1715번][python] 카드 정렬하기

문제 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다.매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10 + 40) + (50 + 20) ..

코딩테스트 2025.05.05

[matplotlib] 한글 폰트 깨짐 문제 해결 - 설치한 폰트 불러오기 / 여러 종류의 글꼴 적용하기

Python에서 시각화 작업을 하다보면 한글이 깨지는 문제가 종종 발생하게 된다. 그럴 때마다 검색해서 해결하는 일이 반복되어, 이번에  한글 폰트 설치부터 적용, 그리고 폰트의 경로를 지정하여 불러오는 방법을 정리해두고자 한다. 그리고 특정 부분만 폰트를 다르게 설정하는 방법도 기록해두고자 한다.최근에 matplotlib를 이용하여 이미지 파일 생성 자동화하면서, 알게된 몇 가지 팁도 함께 정리하고자 한다.    1. 한글 글꼴 깨짐 문제 해결matplotlib를 기본 설정으로 실행하면 한글을 제대로 표시하지 못한다. 이를 해결하려면 한글 글꼴을 설치해야 한다. 나는 나눔고딕(NanumGothic)을 설치했다.# 한글 폰트 설치!apt -qq -y install fonts-nanum > /dev/nul..

파이썬 2025.04.08

[프로그래머스][python] 유연근무제

문제 설명 프로그래머스 사이트를 운영하는 그렙에서는 재택근무와 함께 출근 희망 시각을 자유롭게 정하는 유연근무제를 시행하고 있습니다. 제도 정착을 위해 오늘부터 일주일 동안 각자 설정한 출근 희망 시각에 늦지 않고 출근한 직원들에게 상품을 주는 이벤트를 진행하려고 합니다. 직원들은 일주일동안 자신이 설정한 출근 희망 시각 + 10분까지 어플로 출근해야 합니다. 예를 들어 출근 희망 시각이 9시 58분인 직원은 10시 8분까지 출근해야 합니다. 단, 토요일, 일요일의 출근 시각은 이벤트에 영향을 끼치지 않습니다. 직원들은 매일 한 번씩만 어플로 출근하고, 모든 시각은 시에 100을 곱하고 분을 더한 정수로 표현됩니다. 예를 들어 10시 13분은 1013이 되고 9시 58분은 958이 됩니다. 당신은 직원들..

코딩테스트 2025.03.22

[프로그래머스][python] 지게차와 크레인

작년에 응시한 하나은행 코딩테스트와 문제가 유사하다. (사실 예제까지 동일한 것 같다..!)  1차 시도from collections import dequedef dfs(grid, i, j, n, m): # 나가는 경로찾기 input: grid, point qu = deque() qu.append((i,j)) while qu: x, y = qu.popleft() if x == 0 or x == n-1 or y == 0 or y == m-1: return True for ni, nj in [(x+1, y), (x-1,y), (x,y+1), (x,y-1)]: if grid[ni][nj] == "0": ..

코딩테스트 2025.03.21

[ADP/필기] 제 34회 ADP 필기 시험 응시 후기

ADP 시험을 응시한 지도 벌써 2주가 되었다. 나는 ADsP와 빅데이터분석기사를 취득한 상태였지만, 더 깊이 있는 데이터 분석 능력을 인증받기 위해 ADP 시험에 도전하게 되었다. 사실 시험 전 날 1박 2일 출장을 다녀오느라 컨디션이 좋지 않았고 걱정이 많았지만, 이번 경험 내용을 정리해두려고 한다. 2025년 제 34회 ADP 필기 시험접수일 & 발표일 : 1월 20일 ~ 1월 24일 / 3월 21일시험일 : 2025년 2월 22일 토요일입실 시간 : 08:30~09:30시험 시간: 10:00~13:00 (총 3시간, 180분)시험 장소 : (서울) 용산철도고등학교준비물: 신분증, 필기구(검정 사인펜 또는 볼펜), 수험표 시험 준비 과정 (1) 교재 선택ADP 시험 수험서는 시중에 한 권인 것으로..

[구글 스프레드시트/Apps Script] 구글에서 자동화 구현하기 (엑셀 VBA 대신 사용할 도구)

엑셀이나 구글 스프레드시트를 사용하다 보면 반복적인 작업을 자동화하고 싶을 때가 있다. 최근 나는 구글 스프레드시트에서 특정 데이터를 집계하는 작업을 자동화해야 해서 방법을 찾고 있었다. 엑셀에서는 피벗 테이블, COUNTIF 함수, VBA 등을 활용하면 원하는 데이터를 쉽게 정리할 수 있다. 하지만 구글 스프레드시트에서는 VBA를 사용할 수 없기 때문에 다른 방법이 필요했다. 그러던 중, Google Apps Script(GAS)라는 도구를 알게 되었다.GAS는 구글에서 제공하는 확장 프로그램 형태의 스크립트 도구로, 자바스크립트(JavaScript) 기반이라서 이용하기 어렵지 않았다. 실제로 사용해보니 생각보다 간단하면서도, 반복적인 작업을 자동화하는 데 매우 유용했다. 활용했던 방법을 예시데이터를 ..

컴퓨터일반 2025.03.03

[정보처리기사/필기] 2025년 1회 정기기사 응시 후기

몇 년 간, 접수 기간을 놓쳐서 응시하지 못했던 정보처리기사를 드디어 신청했다. 오늘 오전에 응시하고 온 생생한 후기를 작성하려고 한다. 후기를 검색해보면, 주로 공부 방법에 관한 글이 많았고, 나는 미리 정보를 찾지 않고 시험장에 갔기 때문에, 시험장에서 겪은 경험과 안내받은 정보들을 위주로 정리해보려 한다.  2025년 정기기사 1회필기 접수 : 2025.01.13~2025.01.16필기 시험 : 2025.02.07~2025.03.04필기 합격 발표 : 2025.03.12 주말 시험은 빨리 마감되어 신청할 수가 없었다. 그래서 나는 평일 오전 시험으로 정했고, 시험 장소는 가까운 서울남부국가자격시험장[CBT 5실] 로 신청했다. 시험장은 나란히 붙어있는 두 개의 건물에 나뉘어 있었다. 서울남부디지털센..

컴퓨터일반 2025.02.27

[생성형AI] RAG(Retrieval-Augmented Generation) 기술의 개념과 장점

최근 AI 분야에서 RAG(Retrieval-Augmented Generation) 기술이 주목받고 있다. 그 중에서도 생성형 AI 모델과 관련하여 주목을 받는 이유가 있다. 생성형 AI, 특히 GPT 계열의 모델은 다양한 작업을 잘 수행하지만, 환각(Hallucination) 등의 문제가 존재하여 실무 단계에 적용하는 데 한계가 있다. 모델이 실제로 존재하지 않는 정보나 부정확한 답변을 생성하는 현상인데, 이는 사용자의 신뢰를 떨어뜨릴 수 있다. 이 문제에 대한 대안으로 RAG 기술이 자주 언급되는데, 해당 기술이 무엇인지, 어떻게 대안이 될 수 있는지 알아보고자 한다.  RAG란 무엇인가?RAG는 검색 기반 생성형 모델로, 기존의 생성형 AI 모델에 외부 데이터 검색 기능을 결합한 기술이다. 이 기술..

인공지능(AI) 2024.12.15

[데이터 분석] 피처 엔지니어링 (Feature Engineering)

피처 엔지니어링피처 엔지니어링은 머신러닝 모델링의 첫 번째 단계로, 원시 데이터(raw data)에서 유용한 특징(Feature)를 추출하는 과정이다. 이 과정을 통해 생성된 데이터셋을 기반으로 모델을 학습시키게 되며, 모델이 이해할 수 있는 형태로 데이터를 변환하고 예측 성능을 높이는 것을 목표로 한다.   피처 엔지니어링의 중요성피쳐 엔지니어링은 모델의 성능을 결정짓는 중요한 역할을 한다. 적절한 피처 선택과 가공 방법에 따라 모델의 예측 능력이 달라질 수 있다. 모델이 데이터 패턴을 더 잘 이해하고 학습할 수 있도록 적절한 기법을 사용하여야 한다.   피처 엔지니어링의 종류1. Scaling2. 결측값 처리3. 피처 생성4. 피처 선택5. 변수 변환6. 데이터 바이닝, 비닝 (Binning)  1...

[코딩테스트] 데이터 분석 과제

데이터 전처리1. 필요 없는 열 삭제2. 결측치 처리3. 이상치 처리4. 스케일링5. 인코딩6. 파생변수 만들기   1. 데이터 로드 및 탐색import pandas as pddata = pd.read_csv()# 데이터 탐색data.info()data.isna().sum()data.describe()data.head()data[col].value_counts()data = data.drop([cols], index=1)  2. 데이터 분할from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(data.iloc[:,1:], data['y'], test_size=0.2], ra..