전체 글 394

다익스트라(Dijkstra) [Python][Java]

[WEEK03] 다익스트라 알고리즘다익스트라 알고리즘 (Dijkstra Algorithm)다익스트라 알고리즘은 하나의 시작 정점(source)에서 다른 모든 정점까지의 최단 경로를 구하는 알고리즘이다.그래프 내 모든 간선의 가중치가 0 또는 양수munsik22.tistory.com 파이썬으로 다익스트라 알고리즘 구현하기위와 같은 그래프를 노드 1부터 시작해서 최단 거리를 구하는 다익스트라 알고리즘을 구현하면 다음과 같다.import heapqdef dijkstra(arr, start): D = [float("inf")] * (n+1) D[start] = 0 queue = [(0, start)] while queue:munsik22.tistory.com이미 여러 번 다익스트라에 대해 다뤘지만 까먹은 관계..

CS/알고리즘 2026.08.19

파이썬으로 ViT 찍먹하기

[여기서 이어집니다] 파이썬으로 전이학습 찍먹하기🧩 전이학습이란?전이 학습(Transfer Learning)은 대규모 데이터셋에서 이미 학습된 모델을 새로운 문제에 재사용하는 방법이다. 일반적으로 CNN(합성곱 신경망, Convolutional Neural Network)을 처음부터 학munsik22.tistory.com🧩 ViT란?ViT(Vision Transformer)는 자연어 처리(NLP)에서 사용되는 트랜스포머 구조를 이미지 인식과 같은 컴퓨터 비전(Computer Vision) 분야에 그대로 적용한 딥러닝 모델 아키텍처다.CNN과 ViT의 차이CNN은 작은 필터를 반복적으로 적용해 이미지의 특징을 추출한다.ViT는 이미지를 여러 개의 작은 패치로 나눈 뒤, 각 패치를 문장의 단어처럼 Tra..

CS/Python 2026.08.18

LeetCode 2. Add Two Numbers [Java]

문제 Add Two Numbers - LeetCodeCan you solve this real interview question? Add Two Numbers - You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers andleetcode.comListNode로 정의된 두 수의 합을 구해 ListNode를 반환해야 한다. 처음 봤을 때는 입력과 출력이 배열 형태처럼 표기되어 있어 헷갈렸는데, 연결 리스트의 루트 노드를 파라미..

PS/LeetCode 2026.08.15

파이썬으로 전이학습 찍먹하기

🧩 전이학습이란?전이 학습(Transfer Learning)은 대규모 데이터셋에서 이미 학습된 모델을 새로운 문제에 재사용하는 방법이다. 일반적으로 CNN(합성곱 신경망, Convolutional Neural Network)을 처음부터 학습하려면 많은 데이터와 시간이 필요하다. 하지만 ImageNet처럼 큰 데이터셋으로 미리 학습된 모델은 이미 에지, 색상 변화, 질감, 도형이나 형태 등의 시각적인 특징을 학습했다. CIFAR-10처럼 비교적 작은 데이터셋에 대해 학습할 때 이러한 사전 학습 모델을 활용하면 더 빠르고 안정적으로 학습할 수 있다.방법Backbone 가중치분류기(Classifier)특징Linear Probing동결학습빠르고 적은 데이터에 유리Fine-tuning학습학습성능 향상 가능, ..

CS/Python 2026.08.14

SWEA 26504 - MST 만들기 [Java]

문제 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이이 문제에서는 MST 알고리즘을 구현할 필요는 없지만, MST의 특성에 대해 알고 있어야 풀 수 있는 문제다. 아래는 Kruskal 알고리즘을 기준으로 푼 코드다. 일반적으로 Kruskal 알고리즘은 다음과 같은 순서로 진행된다.가중치 배열 오름차순 정렬Union-Find: 다른 그룹의 노드를 잇는 간선을 선택 → V-1회 반복가중치의 합이 최소가 되게 하는 MST의 특성 때문에 무조건 가장 큰 가중치를 가져올 수 는 없다. 우선 최소 비용(minCost)의 경우는 쉽다. 같은 그룹끼리 선택하는 경우가 없도록 제일 작은 가중치들만 고르도록 하면 된다. 즉, 오..

PS/SWEA 2026.08.13

SWEA 5249 - 최소 신장 트리 [Python]

문제 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이백준 1197번, SWEA 3124번 문제와 같은 동일한 문제다. 차이점은 이번 문제는 Python으로만 제출이 가능하다는 것이다.root = []def find(x): if x == root[x]: return x else: root[x] = find(root[x]) return root[x]def union(A, B): rootA = find(A) rootB = find(B) if rootA == rootB: return False root[rootA] = rootB; ..

PS/SWEA 2026.08.13

파이썬으로 Attention 찍먹하기

🧩 Attention이란?Attention 메커니즘은 딥러닝 모델이 입력 데이터에서 가장 관련성이 높은 부분을 우선시하도록 (또는 집중하도록) 유도하는 머신러닝 기법이다.(출처: IBM) Attention은 모델이 문장을 처리할 때 현재 토큰을 이해하기 위해 다른 어떤 토큰을 얼마나 중요하게 참고해야 하는지 계산하는 메커니즘이다. 예컨데 각 단어가 다른 단어들을 같은 비중으로 보지 않고, 상황에 따라 중요한 단어에 더 큰 가중치를 주도록 한다.Attention이 하는 일"나는 오늘 SSAFY에 간다"라는 문장에서 "간다"라는 토큰을 이해할 때 모델은 앞 단어들을 참고한다.토큰가중치설명나는0.1누가 가는지와 관련오늘0.2언제 가는지와 관련SSAFY에0.6어디로 가는지와 직접 관련 있으므로 높은 비중간다0..

CS/Python 2026.08.12

파이썬으로 토큰화+임베딩 찍먹하기

🧩 토큰화란?토큰화(Tokenization)는 문장이 모델을 처리할 수 있는 토큰 ID 정수 배열로 바꾸는 과정이다. 토크나이저(Tokenizer)는 문장을 토큰 단위로 자르고 정수 배열로 변환해주는 도구다. Transformer 계열 모델에서는 보통 다음 흐름으로 동작한다.AutoTokenizer로 토큰화하기from transformers import AutoTokenizermodel_name = "klue/bert-base"tokenizer = AutoTokenizer.from_pretrained(model_name)text = "안녕하세요! 우리집 강아지 이름은 문식이입니다."# 사람이 읽을 수 있는 토큰 확인tokens = tokenizer.tokenize(text)# 토큰을 모델 입력용 정수 ..

CS/Python 2026.08.12

파이썬으로 MLP 찍먹하기

🧩 MLP란?퍼셉트론퍼셉트론(Perceptron)은 1957년 프랑크 로젠블라트가 고안한 최초의 인공 신경망 알고리즘이다. 인간의 뇌 신경세포인 뉴런이 전기 신호를 전달하는 모습을 모방하여, 여러 개의 입력값을 받아 각각의 가중치를 곱하고 더한 뒤, 그 합이 임계치(역치)를 넘으면 1, 아니면 0(또는 -1)을 출력하는 방식이다.MLPMLP(Multi-Layer Perceptron)는 퍼셉트론을 여러 층(Layer)으로 쌓은 인공 신경망이다. 각 층에서는 활성함수를 통해 입력을 처리한다.입력층 (Input Layer): 외부에서 데이터를 처음 받아들이는 층은닉층 (Hidden Layer): 입력층과 출력층 사이에 위치하며, 복잡한 패턴과 비선형 관계를 찾아내는 핵심적인 층출력층 (Output Layer..

CS/Python 2026.08.11

파이썬의 PyTorch 라이브러리에 대해 알아보기

🧩 PyTorch란?PyTorch는 Meta에서 개발한 오픈소스 머신러닝 및 딥러닝 프레임워크다. PyTorch는 딥러닝을 쉽게 구현하도록 만들어진 오픈소스 라이브러리다.PyTorch: AI 연구자 친화적. 명명백백한 딥러닝의 왕TersorFlow: 개발자 친화적. PyTorch가 없는 시대에 태어난 범부신경망 학습은 다음 과정으로 요약할 수 있다.데이터를 모델에 넣는다예측값을 만든다정답과 비교해서 얼마나 틀렸는지 계산한다 → 손실(loss)"어느 방향으로 바꾸면 덜 틀릴까?"를 미분으로 계산한다 → gradient모델의 숫자들(가중치)를 조금씩 수정한다이 과정을 아주 많이 반복한다PyTorch는 특히 3~5번을 편하게 처리해준다.PyTorch vs Scikit-learnScikit-learn은 전통적..

CS/Python 2026.08.10