DLRM은 추천 시스템을 위한 대표적인 딥 뉴럴 네트워크 모델 중 하나이다.DLRM에서는 categorical feature을 dense 표현으로 매핑하기 위해 임베딩을 사용한다.NLP에서 워드 임베딩을 사용하는 이유는 각 단어의 의미를 표현하기 위해 주변 단어들과 그
값을 가진 노드(node)와 노드들을 연결하는 간선(edge)로 이루어진 자료구조최 상단에 있는 노드를 root노드라고 하며 자식 노드, 부모 노드의 관계가 있다.트리에는 사이클이 존재할 수 없다. (만약 사이클이 만들어진다면, 그것은 트리가 아니고 그래프다)모든 노드
이 문제는 계속 반복적으로 나오는 가장 긴 증가하는 수열 찾기 문제이다. 동적 프로그래밍 방식으로 풀어보자.먼저 앞에서부터 각 위치까지의 가장 긴 증가하는 수열을 저장하고자 dp에 길이와 수열을 저장하는 이중 리스트로 만들었다.앞에서부터 각 위치까지 앞에 작은 수가 있
github issue중요 용어 정리애플리케이션: API를 써서 스파크 위에서 돌아가는 사용자 프로그램. 드라이버 프로그램과 클러스터의 실행기로 이루어진다.SparkSession: 스파크 코어 기능들을 사용할 수 있는 시작점을 제공, API로 프로그래밍을 할 수 있게
힙은 특정한 규칙을 가지는 트리로, 최댓값과 최솟값을 찾는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로 한다.부모노드와 자식모드의 키값 사이에는 대소 관계가 성립된다.최소 힙: 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙최대 힙: 부모 노드의 키값
다익스트라 알고리즘은 그래프 상에서 시작 정점부터 나머지 각 정점까지의 최단 거리를 구하는 알고리즘이다.그래프에는 간선마다 가중치가 있으며, 음수는 될 수 없다. (벨만-포드 알고리즘은 음수도 가능)graph 자료 구조와 우선순위 큐를 사용하며, 아래 과정을 반복함으로
이 문제도 최소 이동 거리를 구하는 문제이기 때문에 bfs로 방향을 잡고 풀면 된다.다만 여기서 다른 문제와는 다른 점은 딱 한번 벽을 부술 수 있다는 것이다.벽을 부순 경우와 안 부순 경우를 기록해가기 위해 2차원 배열이 아닌 3차원 배열의 그래프로 구현했다.
이 문제는 최소 주사위 횟수를 구해야 하는 bfs 문제이다.전에는 너비우선탐색을 하며 전의 값 + 1만 해주면 되었다면, 이 문제는 이 값이 뱀이나 사다리가 있는지에 따라 경우가 추가되는 문제다.그래서 visited 정보를 따로 저장해주었고, board에는 0으로 초기
문제링크https://www.acmicpc.net/problem/7569토마토가 담긴 상자가 있을 때, 익은 토마토의 상하좌우 근접한 토마토는 하루가 지나면 익는다.모두 익는데 걸리는 최소 시간을 구하여라!
앞의 챕터에서는 머신러닝 알고리즘이 무엇인지 알아보고, 프로젝트에 ML을 적용하는 방법에 대해 알아보았다.이제 이번 챕터에서는 왜 머신러닝 알고리즘이 필요한지에 대해 생각해보자.우선 우리 삶의 여러 측면에서 머신러닝 알고리즘이 필요하다는 점은 인정할 필요가 있다.우리가
우선순위 큐는 데이터를 추가한 순서와 상관없이, 데이터를 꺼내는 순서를 오름차순으로 하는 특징이 있다.즉, 내부의 데이터를 항상 정렬된 상태로 보관하는 로직이 있으며, heapq 모듈을 통해 구현 가능하다.put(), get() 메서드 모두 O(log n)의 시간복잡도
'당장 눈 앞에 보이는 최적의 상황만을 쫓는 알고리즘'으로 가장 단순하고 난이도가 낮은 알고리즘이다.항상 최적의 결과를 도출하는 것은 아니지만 어느 정도 최적의 해에 근사한 값을 빠르게 구할 수 있다. 또한 특정한 상황에 있어서는 그리디 알고리즘이 최적의 해를 보장할
리트 코드의 머신러닝 관련 영문 자료를 읽고 정리하는 중이다.'How'는 그 두번째 챕터로 머신러닝의 구체적인 작동 방법에 대해 나와있다.머신러닝 workflow의 궁극적인 목표는 머신러닝 모델을 만드는 것이다. 그리고 우리는 데이터로부터 모델을 얻는다.결과적으로 데이
연속적으로 나열된 n개의 수가 있을 때, 특정 구간의 모든 수를 합한 값을 구하는 문제이다.M개의 쿼리, N 크기의 구간이 주어질 때, 매번 구간 합을 계산한다면 해당 알고리즘은 O(NM)의 시간 복잡도를 가진다. 이러한 경우에는 M과 N의 범위가 커지면 시간 초과가
9251번 문제 - LCS(Longest Common Subsequence) 이 문제는 풀이법이 잘 떠오르지 않았다. 문자열 a,b를 가지고 점화식을 그려보자면, a[i] == b[j] 일 때, LCS(a[i], b[j]) = LCS(a[i-1], b[j-1]) +
모든 정형, 반정형, 비정형 및 이진 데이터를 순수한 형태로 저장할 수 있는 시스템을 말한다.한마디로 "무엇이든 저장할 수 있는 중앙 집중식 데이터 저장소"데이터를 먼제 정제, 구조화할 필요 없이! 그대로 저장한 뒤에, 필요할 때 필요에 맞게 추가적인 정제과정을 거쳐
문제 설명이 문제는 생각보다 문제를 이해하는 데에 시간 소모가 컸다.역시 문제를 처음 접했을 때, 문제와 입력 조건, 출력을 잘 읽어보는 것이 중요하다는 걸 또 한번 느낄 수 있었다.수열이 주어졌을 때, 증가하는 숫자의 수열 (연속 조건 x) 길이 중 가장 긴 길이를
"Machine Learning"의 단어는 machine이 사람처럼 학습하거나 사람보다 더 잘 학습한다는 느낌이 들어 컴퓨터 과학의 본질을 신비화하는 경향이 있다. 그러나 머신 러닝은 미리 정의된 절차를 수행하는 컴퓨터 프로그램에 지나지 않는다.머신러닝 알고리즘과 논-
https://velog.io/@lhj99apr/python-%EB%8F%99%EC%A0%81%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B3%84%EB%8B%A8%EC%98%A4%EB%A5%B4%EA%B8%B0-%