목록분류 전체보기 (165)
No Limitation
https://programmers.co.kr/learn/courses/30/lessons/43105?language=python3 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr Fact Finding Index를 이용해 해당 노드 별 max값을 저장한 memo 이용 Recursion을 이용하여 노드 탐색 def depth_search(triangle, start, i, j, memo = {}, sums1=0, sums2=0) : if (i, j) in memo : return memo[(i, j)] if i == len(triangle): return max(sums1, sums2..
https://galid1.tistory.com/507 동적 프로그래밍은 큰 문제를 작은 문제로 나누어 푸는 점에서는 분할 정복과 맥락을 같이 하는데 동적 프로그래밍의 의의는 작은 문제들 사이에 중복이 발생하는 경우에 효과적이라는 것입니다. 즉 작은 문제들이 반복되는 경우 이 작은 문제들은 한 번만 풀고 그 뒤로 메모에 적어 놓아 똑같은 작은 문제가 나타날 경우 앞서 메모한 작은 문제의 결과 값을 이용하는 방법론입니다. 이러한 동적 프로그래밍을 풀 수 있는 조건은 다음과 같습니다. 작은 문제가 반복적으로 발생하는 경우 중복 문제들 끼리는 동일한 정답을 내 놓는 경우 [이게 바로 Divide and Conquer와의 차이점] 동적 프로그래밍은 이러한 중복을 효율적으로 처리하기 위해 기록을 해 놓는데 그 기..
여호수아 묵상을 시작했다. 여호수아는 평소 모세의 후계자 정도로만 알고 있었지 어떤 인물인지 자세하게 알지는 못했지만 이번 기회에 알아가면 좋을거 같다. 무슨 말씀을 여호수아에게 하고자 하셨을지, 이스라엘 민족에게 어떠한 길을 예비하실지 이번 묵상을 통해서 더 알아갔으면 싶다. 여호수아 1장 5. 네 평생에 너를 능히 대적할 자가 없으리니 내가 모세와 함께 있었던 것 같이 너와 함께 있을 것임이니라 내가 너를 떠나지 아니하며 버리지 아니하리니 6. 강하고 담대하라 너는 내가 그들의 조상에게 맹세하여 그들에게 주리라 한 땅을 이 백성에게 차지하게 하리라 7. 오직 강하고 극히 담대하여 나의 종 모세가 네게 명령한 그 율법을 다 지켜 행하고 우로나 좌로나 치우치지 말라 그리하면 어디로 가든지 형통하리니 8...
참고 자료 https://wikidocs.net/53560 유원준 님의 Pytorch로 시작하는 딥러닝 입문 책 자료를 참고하였습니다. 학부 때는 R을 위주로 사용하고 Python의 경우는 scikit-learn과 keras 정도만 사용했었다보니 자주 사용되는 딥러닝 프레임워크인 tensorflow와 torch를 공부를 최근에 시작하게 되었다. 특히 연구실에서는 pytorch를 많이 사용하기 때문에 들어가기 전 미리미리 공부하자! 기초 선형회귀부터 RNN까지 차근차근 공부를 해나가보자! 우선 모형에 들어가기 전에 간단하게 초기 세팅을 수행해준다. 여기서 랜덤 시드 값을 고정하는 이유는 여러번 수행했을 때도 동일한 결과값을 산출하기 위해서 사용했다는 점만 착안 저자님은 굉장히 단순한 예제를 사용하셨는데 X..
https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 문제는 단순 구현 문제였다. 다음과 같이 빗물이 있으면 빗물을 담기게 할 수 있는 양을 구하는 문제인데 예를 들어 위의 검정색을 건물(?)이라고 치면 건물을 구성하는 부분을 1, 하얀색으로 빈 부분을 0이라고 하자. 저 그림을 이중 배열을 통해 나타낼 수 있는데 다음과 같이 나타낼 수 있다. [ [ 0, 0, 0, 0, 1, 0, 0, 0 ] [ 1, 0, 0, 1, 1, 0, ..
참고 강의 고려대학교 산업경영공학부 강필성 교수님 https://www.youtube.com/watch?v=d6nRgztYWQM 앞에서 공부했던, lighGBM, XGB 전부 Gradient Boosting 기반의 알고리즘인데 그럼 대체 이 GBM이 뭔지에 대해 공부해보자 우선 직관적으로 알 수 있듯이 Gradient Boosting은 말 그래도 Gradient Descent + Boosting 임을 의미한다. 잠깐 본격적으로 들어가기 전에 adaboost를 잠깐 리뷰하자면 이 adaboost는 weak learner들을 additive하게 더해가면서 모델을 구축하고, 틀리는 케이스에 대해 집중적으로 더 보는 방법을 통해 모델을 개선시켜 나감. → forward stage-wise manner 라고 한다..
https://programmers.co.kr/learn/courses/30/lessons/42884?language=python3 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr [ 이 문제는 복습을 꼭 해보자 ] 첫 번째 시도 차량 이동 시간의 폭이 좁은 얘를 기준으로 정렬해서 접근 해당 시간대에 카메라를 위치시킴으로서 카메라의 갯수 최소화 어느 구간이 포함되는 지에 따라 routes 갱신 구현 코드 def check(route1, route2) : if route1[0] > route2[1] or route1[1] < route2[0] : return False return True def solution(..
https://programmers.co.kr/learn/courses/30/lessons/42861?language=python3 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 본 문제는 MST(Minimum Spanning Tree) 문제로, MST를 푸는 대표적인 방법인 Kruskal과 Prim 알고리즘으로 풀 수 있습니다. MST에 대해서는 추후에 자세하게 다루도록 하겠습니다. 저는 본 문제를 크루스컬 알고리즘을 활용하여 풀었습니다. 크루스컬은 Union Find 알고리즘을 통해 Cycle을 체크하였고 기존 path를 정렬하여 가장 path가 적은것부터 탐욕적으로 선택하는 방법으로 문제를 풀었습니다..
참고 포스팅 https://ratsgo.github.io/data%20structure&algorithm/2017/11/12/disjointset/ 서로소 집합(Disjoint Set)이란: 서로 중복되지 않는 부분 집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료구조. 다른 의미로는 그래프에서 Connected Components 들을 찾는 과정의 의미와 동치이다. 그렇다면 Connected components라는 것은 무엇일까? 다음 글을 참고해보자 In graph theory, a connected component of an undirected graph is a subgraph in which any two vertices are connected to each other by pat..