본문 바로가기

전체 글

(22)
실전 알고리즘 -0x08, 0x09 0x08강 스택 괄호 응용 주요 알고리즘 스택 괄호 응용 주요 알고리즘string 입력 for(auto c:a) //입력받은 string을 하나씩 접근if (, { ,[ : push else if ) :s.empty() || s.top()≠ ‘(’ : is_Valid , false 아니면 popelse if },] : 경우도 동일 스택이 비어있는지 확인하고 스택의 top 값이 pop 하는 조건과 같지 않은지 확인if (!empty) : isValid false if (isValid) : cout “YES” else “NO”3986번 코드 🚫getline과 cin의 확실한 차이를 알아야할 것 같음동일한 코드에서 cin으로 쓰면 정답 , 아니면 오답이었음  틀린 코드#include #include usin..
실전 알고리즘 -0x0A, 0x0B DFSDFS 정의Depth First Search: 다차원 배열에서 각 칸을 방문할 때 깊이를 우선으로 방문하는 알고리즘 💡깊이 우선 알고리즘 vs 너비 우선 알고리즘 (BFS)BFS 과정에서 큐가 스택으로 바뀐 것 뿐 !!시작하는 칸을 스택에 넣고 방문했다는 표시를 남긴다.스택에서 원소를 꺼내어 그 칸과 상하좌우로 인접한 칸에 대해 3번 진행해당 칸을 이전에 방문했다면 아무것도 하지 않고, 처음으로 방문했다면 방문했다는 표시를 남기고 해당 칸을 스택에 삽입스택이 빌 때까지 2번 반복모든 칸이 스택에 한 번씩 들어가므로 시간 복잡도는 칸이 N개일때 O(n)실수 주의할 부분 (bfs 이어서)시작점 방문 표시 잊지않기시작점 방문 표시 후에 스택에 넣어야한다.스택에 넣고자하는 원소가 범위에 벗어나면 컴파일 ..
실전 알고리즘 -0x06,0x07 Queue정의와 성질스택과 달리 먼저 들어간 원소는 먼저 나오기! FIFO (First In First Out)시간 복잡도원소의 추가 : O(1)원소의 제거: O(1)제일 앞(front), 제일 뒤 (rear)의 원소 확인 : O(1)제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능하다배열 이용 구현const int MX= 100005;int dat[MX];int head = 0; tail= 0;원소가 들어가있는 자리: dat[head]부터 dat[tail]까지큐의 크기 : tail - head배열이 존재한다고 할 때 처음엔 head, tail이 0을 가리키고 있으면서 add 할 경우에는 tail이 +1 , 값을 빼고싶을 때는 Head를 +1하면된다. 이 경우 원소를 계속해서 삽입 삭제 ..
자료구조 10장 그래프 1. 그래프 (Graph) 관련 개념 정리: 연결되어 있는 객체 간의 관계를 표현하는 자료구조예시 : 트리, 전기회로, 지도에서의 도시들 간 연결상태 , 도로망, 선수 과목 관계 그래프의 역사1800년대 오일러에 의하여 창안오일러 문제 : 모든 다리를 한번만 건너서, 처음 출발했던 장소로 돌아오는 문제A,B,C,D 지역의 연결 관계 표현 .. 위치를 정점 다리를 간선으로오일러 정리 : 모든 정점에 연결된 간선의 수가 짝수면 오일러 경로 존재함그래프의 정의그래프 G는 (V,E)로 표시하며 G=(V,E)정점 (Vertices)여러 가지 특성을 가질 수 있는 객체 의미V(G): 그래프 G의 정점들의 집합노드(node)라고도 불림간선(edge)정점들 간의 관계 의미링크라고도 불림E(G): 그래프 G의 간선들의 ..
C++ 문법 지금까지 나는 C언어와 Java, 파이썬 언어를 주로 공부해봤다. 2학년 겨울방학에 서현이와 은솜이와 알고리즘 공부를 결심하면서 C++로 공부를 시작해보기로 마음 먹었다.  C++ 언어에 대해 공부하면서 내가 생각한 기존 C와의 큰 차이점은 C언어랑 비슷한데 객체지향을 따른다는 것이다.  1. 출력printf = cout cout >> "Hello world" ;cout = String out 이라서 줄여서 cout, 씨아웃이라고 읽음 * 여기서 >>는 시소실에서 배웠던 출력할 때 쓰는 문자 , 그러면  2. 변수 C언어에서와 쓰는 것과 유사함 int , double, float, boolean 사용 가능  3. 입력 String in 이라서 cin (씨인)이라고 읽음 #include using name..
Dynamic time wrapping 공부 Dynamic Time Wrapping(DTW)란 ?: 속도 또는 길이에 따라 움직임이 다른 두 시계열간의 유사성(거리)를 측정하는 알고리즘 모든 변화와 속도를 무시하여 두 개 이상의 시계열을 비교하는 매우 강력한 기술이다. 모든 시계열 형태의 sequence 데이터에 활용할 수 있음 유사도를 바탕으로 두 시계열 데이터 간 시간 정렬 가능 음성 인식이나 자연어 처리에 자주 활용됨비교 데이터 포인트 사이의 시간 지표가 완벽하게 동기화되지 않을 때 사용되는 기술다이브 프로젝트에서 우리가 계속 고민해오던 문제점 중 1개가 우리가 만든 데이터셋이 웹캠으로 실시간 인식하는 손 동작이 모두 다른 사람이 동작하는 것이기때문에 두 데이터의 속도차이가 나는 것이었음. DTW가 시간 지표가 완벽하게 동기화되지 않을때 사용..
LSTM 공부 이번 딥다이브 프로젝트에선 손 동작 인식 후 메시지 보내는 기능을 만드려고한다. 그 과정에서 기존의 미디어 파이프는  정적인 포즈를 다룬다는 것에 있어 동적 포즈를 인식하기 위해  LSTM을 이용해 동적 포즈 인식을 시도하려고한다.그래서 이번엔 LSTM에 대해서 공부할 예정이다. LSTM을 공부하기 전 RNN이 무엇인지 짚고 넘어가봐야한다. 1. RNN먼저  RNN이란 Recurrent  Neurak Networks의 줄임말로 순환 신경망을 뜻한다.RNN =  딥러닝의 가장 기본적인 시퀀스 모델여기서 시퀀스 모델이란 연속적인 데이터를 다룬다는 것이다.  RNN은 시간에 따른 의존성을 처리하기 위해 이전 상태를 기억하고 이를 다음단계로 전달한다.  RNN(Recurrent Neural Network, 순환..
MediaPipe 논문 리뷰 MediaPipe Hands: On-device Real-time Hand Tracking0. Abstract파이프 라인은 전반적으로 2가지 모델로 설명할 수 있다. palm detector : 손의 바운딩 박스를 제공hand landmark model : hand skeleton(뼈대) 예상하는 모델 크로스 플랫폼 ML 솔루션을 구축하기 위한 프레임 워크이다. 제안된 모델과 파이프 라인 아키텍쳐는 높은 예측 성능으로 모바일 GPU에서 실시간 추론을 가능하게 한다! 1. Introduction 손 추적은 AR/VR에서 자연스러운 상호작용 및 커뮤니케이션 방식을 제공하는데에 있어 중요한 구성 요소이기때문에 오랜 시간 연구되어왔음. 그러나 , 특수 하드웨어가 아닌 모바일 장치에서 실시간으로 실행하기 어려운 ..