전체 글 168

[백준 1991번] 트리 순회(C++)

아이디어 char로 들어오는 것을 받고, int로 변환하여 .은 -1로 넣고, 나머지는 숫자에 맞게 넣는다. (A= 0, B=1,C=2 ... Z = 25) 각 벡터에 처음[0]은 왼쪽 노드고, 각벡터에 두번쨰[1]은 오른쪽 노드가 된다. 포인터로 보면 NULL노드겠지만 빈 노드를 -1로 표현했으니, -1이 ㅇ니면 travel을 계속한다.travel(int a, int type)의 type은 0,1,2로 각각 전위, 중위, 후위 순회이다. C++ 풀이 #include using namespace std; vector v[26]; int N; void travel(int a,int type){ int p = a +'A'; switch(type){ case 0: //전위(preorder) cout a >> ..

[백준 1932번] 정수삼각형(C++)

아이디어 일단 dp인건 알것이고, 1,2,3으로 3가지 경우의수로 나눠서 풀었다. 1. 가장 왼쪽 노드 = 이전 층의 가장 왼쪽 노드 dp값 + 가장왼쪽 노드의 board값 2. 중간에 껴있는 노드 = max(자신이 받을 수 있는 이전 층 노드dp값) + 자신의 노드 board값 3. 가장 오른쪽 노드 = 이전층의 가장 오른쪽 노드 dp값 + 자신의 노드 board값 C++풀이 #include using namespace std; int board[501][501]; int dp[501][501]; int N; int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); cin >> N; for(int i = 0 ; i< N; i++) { for(int j..

Pytorch로 시작하는 딥러닝 입문 인터넷 링크

이전에 한번 슥봤던 RNN에 관심이 생겨서(아무래도 시계열과 관련된 딥러닝 모델이라..) 구글링으로 pytorch forward나 이것저것 검색해서 보고있는데 눈에 띈 사이트. 한글이기도 하고(번역느낌이 조금 나지만) 그림이랑 같이 잘 표현해 주고있어서 좋다. (압도적 감사) 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net

[백준 11725번] 트리의 부모 찾기 (C++)

아이디어 처음엔 뭔문제인가 했다. 그냥 노드 1번부터 DFS하면 DFS들어가기 전 노드N은 DFS들어간 노드 N+1의 부모가 되는 논리 C++풀이 #include using namespace std; vector v[100001]; bool visited[100001]; int parent[100001]; int N; void dfs(int node, int prev) { parent[node] = prev; // 해당 단계로 넘어오면 이전 노드는 부모이므로. for(int i = 0 ; i< v[node].size(); i++) { if(visited[v[node][i]] == false){ //방문하지 않은 노드 방문. visited[v[node][i]]=true; dfs(v[node][i],node..

[Python] 상속시 super().__init__ 사용

알고리즘 문제로 문법을 익히다보니 클래스와 상속등을 이미 배웠지만, 코드상에서 익숙하지 않았다. 요즘 LSTM등 시계열 처리에 도움이 되는 모델들을 보고있는데, 코드상에서 super()를 심심치않게 볼 수 있다. [Python] Tip - super()로 부모클래스를 초기화 super를 사용하지 않고 자식클래스에서 부모클래스를 초기화 할 때 다음과 같은 방법을 사용합니다. class Parent: def __init__(self,num): print('parent', num) class Child(Parent):ㄷ def __init__(self): Pa.. brownbears.tistory.com C++에서도 있었던 문제였지만, 다이아몬드 상속의 경우 Child의 instance를 만들때 super를 ..

[Python] *args , **kwargs에 대해서

파이썬 코드읽는데, *args, **kwargs가 나와서 이해가 안됐다. 아래 사이트를 보고 대략적으로 적었습니다. [나름 중급 파이썬1] *args와 **kwargs 항상 헷갈리는 두 가지 다시 한번 살펴보자 | 이 글은 파이썬의 문법을 모르면 이해하기 어렵습니다. python의 함수 작성 요령, 인자(argument)와 파라미터를 이해한다면 도움이 되는 내용입니다. 아 brunch.co.kr 결국 요약하자면, python에서의 *은 포인터 이런게 아니고, 몇개의 인자가 들어올지 모를 때. *args 를 쓰면 여러개를 인자로 넘길 수 있고, 이를 tuple로 활용하게 되는것이고, **kwargs 도 여러개를 인자로 넘길 수 있으나, 이를 dictionary처럼 활용 할 수있다. 또한 parameter들..

[백준 11053번] 가장 긴 증가하는 부분 수열 (C++)

아이디어 그림으로 보면 약간 이런느낌으로 풀었다. v[0]는 당연히 1일거고. v[1]부터 앞을 탐색해서 자신보다 작은걸 찾아야하고( 증가하는 수열이므로 ) 그중에서 dp값이 가장 높은걸 찾아야한다. ( 30을 예로들면 ( 20, dp=2) , (10, dp=1)을 찾을 수 있으니,(10,dp=1)은 무시해야한다는 의미. 2+1이 되야지 1+1이 되면 안되니까.) C++ 풀이 #include using namespace std; vector v; int dp[1001]; int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); int N; int result=1; cin >> N; for(int i = 0 ; i< N; i++) { int tmp; ci..

[백준 9465번] 스티커 (C++)

아이디어 이전에 RGB라고 비슷한 문제를 푼적이 있어서 한번에 통과가 됐다. 위가 dp보드일때, 빨간V위치에 올 수 있는 경우는 1과 2에서 올 수 있다. 2'도 가능하지만, 점수는 양수이므로 2'에서 온다면 2'-2-v로 올때보다 무조건 작은 경우 이므로 고려하지 않는다. [ ( 2- V ) 경로와 (2'-2-V)는 2에 2'에서 오는 경로를 포함하고 있으므로. ] C++ 풀이 #include using namespace std; int board[2][100001]; int dp[2][100003]; int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); int T; cin >> T; for(int i = 0 ; i < T; i++) { memse..

Tensorflow-gpu 설치하기

랩실에서 2070을 줬는데 안쓰면 아까우니 tensorflow-gpu를 써봐야 하지 않겠나. 이분꺼 보면서 따라하며 설치했다. [Setup] 딥러닝 개발 환경 구축 한방에 끝내기 개요 딥러닝이라는 긴 여정을 위한 첫 단계. 딥러닝 개발 환경 구축을 위한 포스팅입니다. 환경설정으로 인한 시간낭비를 최소화 하고자 대부분의 내용을 총정리합니다. 목차 사전 확인사항 및 theorydb.github.io 내 환경 그래픽카드 : RTX 2070 쿠다 버전 : CUDA10.1 cuDNN 버전 : 8.0.5 ( 7.6인줄 알고 클릭했는데 8.0.5네..?) 해야하는거 1. 아나콘다 설치 2. Visual Studio 2019 설치 3. CUDA 10.1설치 4. cuDNN v8.0.5설치 5. 가상환경 만들면서 pyt..

LSTM관련글

brunch.co.kr/@chris-song/9 LSTM(RNN) 소개 Recurrent Neural Network의 대표적인 LSTM 알고리즘 | 안녕하세요. 송호연입니다. 요즘.. 딥러닝에 푹 빠져있어서.. 퇴근후 RNN 공부할겸 아래 블로그 글을 한글로 번역하였습니다. 원 저작자, Google Brain brunch.co.kr 좀 읽어보기. 옛날에 한번 배웠는데, Recurrent 구조다보니 헷갈림 step by step으로 되어있어서 읽기 편하다.