분류 전체보기(44)
-
[Naver Boostcamp AI Tech 7기] 학습 정리 - week 2 (8/12~8/16)
머신러닝이란 어떤 작업 T에 대해 경험 E와 함께 성능 P를 향상시키는 알고리듬 ex) 이미지 분류 작업(T) : 주어진 이미지를 분류하는 작업 경험(E) : 다양한 이미지들로 이루어진 학습 데이터셋 성능(P) : 이미지 분류 정확도머신러닝 학습의 종류지도 학습(Supervised Learning) : 데이터와 정답 레이블을 주고 학습비지도 학습(Unsupervised Learning) : 데이터만 주고 데이터에 존재하는 패턴을 학습강화 학습(Reinforcement Learning) : 일련의 행동에 따른 보상을 이용한 학습 (일종의 경험을 통한 학습이라 생각하면 된다.) - ex) 알파고 (..
2024.08.16 -
[Naver Boostcamp AI Tech 7기] 학습 정리 - week 1 (8/5~8/9)
Pytorch부스트캠프의 첫주차는 Pytorch의 기본적인 사용방법과 이 Pytorch를 이용해 기본 선형 회귀 모델과 이진 분류 모델을 구현해보는 주 였습니다. TensorTensor를 Pytorch의 핵심 데이터 구조로 Numpy의 다차원 배열과 유사한 형태의 데이터를 표현하는데 보통 모든 일을 이 Tensor를 써서 해결합니다. (Tensor는 C++의 배열과 같은 방식의 배열입니다.)아무래도 Python의 기본 배열은 속도도 느리고 메모리 할당 구조도 다르기에 빠른 계산이 가능하고 AI 모델 구축에 사용하는 Pytorch와 연관이 많기에 tensor를 사용해줍니다. Tensor 생성torch.tensor(data, dtype=torch.dtype) : 기본적인 Tensor의 생성 방식으로 dtyp..
2024.08.09 -
(Easy - Sorting) Leetcode - 169. Majority Element
이 문제는 배열이 주어졌을 때 배열에서 과반수를 차지하는 숫자를 찾는 것입니다.과반수를 차지하는 숫자는 배열의 절반 크기(n/2)보다 많습니다. 가장 간단하게 풀 수 있는 방법은 정렬을 한 뒤 Index = n / 2에 있는 수를 반환하는 것입니다.과반수를 차지하는 숫자를 찾는 것이므로 정렬을 하면 배열의 중간에 과반수를 차지하는 수가 오기에 간단하게 답을 찾을 수 있습니다. int majorityElement(std::vector &nums) { std::sort(nums.begin(), nums.end()); return nums[nums.size() / 2]; }이 방법은 정렬하는 시간으로 인해 평균 시간복잡도 O(N log N)의 시간을 가집니다. Hash..
2024.07.14 -
(Easy - Sliding Window) Leetcode - 643. Maximum Average Subarray I
숫자 배열이 주어지면 이 배열 안에서 만들 수 있는 연속된 부분 배열들 중 가장 큰 부분 배열의 평균값을 찾는 문제입니다.만약 [1, 12, -4, -6] 배열이 있으면 부분 배열은 연속적으로 만들어져야 하므로 [1, 12]나 [12, -4, -6]과 같은 부분 배열은 가능하나 [1, -4]와 같이 떨어져 있는 원소들은 부분 배열로 만들 수 없습니다.가장 큰 평균값을 찾는 것이므로 부분 배열의 원소의 수로 나누기 전 원소들의 합이 가장 큰 부분 배열을 찾으면 됩니다.이때 문제에서 주어진 부분 배열의 길이는 k입니다.즉, 부분 배열의 길이가 k인 배열의 원소들의 합이 가장 큰 경우를 찾으면 됩니다. 생각나는 가장 간단한 방법은 모든 부분 배열을 시도해보는 것입니다. double findMaxAver..
2024.07.13 -
(Easy - Linked List) Leetcode - 206. Reverse Linked List
이 문제는 Linked-List를 뒤집는 문제입니다. 이전 노드, 현재 노드, 다음 노드를 각각 추적하며 각 노드가 가르키는 방향을 바꿔줍니다./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */class Solution {public: ListNode* reverseList(ListNode*..
2024.07.07 -
(Easy - Greedy) Leetcode - 121. Best Time to Buy and Sell Stock
이 문제는 날짜 별로 주식의 가격이 적힌 배열이 주어집니다.그러면 어떤 날에 주식을 산 후 다른 날에 주식을 팔 때 가장 큰 이익이 얼마인지 찾는 문제입니다. 간단하게 하루하루가 지날 때마 가장 가격이 낮을 때를 사는 날로 정하고 가장 낮은 가격을 갱신해줍니다.이때 갱신한 날이 주식을 산 날입니다.이루 하루가 지날때마다 가장 낮은 가격을 빼 이득을 계산하며 최대 이득을 갱신해줍니다. int maxProfit(vector& prices) { int profit = 0; int minPrice = prices[0]; // 첫날은 팔 수 없습니다. for (int i = 1; i
2024.07.07