Lucky Charms Rainbow > '분류 전체보기' 카테고리의 글 목록 (9 Page) — Hoon's Blog

분류 전체보기

    Chainer: A Deep Learning Framework for Accelerating theResearch Cycle 리뷰

    Chainer: A Deep Learning Framework for Accelerating theResearch Cycle 리뷰

    딥러닝 프레임워크 중 하나인 Chainer에 대해 리뷰를 해보려고 합니다. Chainer 소개 Chainer는 이라는 일본 벤처 기업이 개발한 딥러닝 프레임워크입니다. 특징 ▒ "Define-and-run" vs "Define-by-run" Chainer는 무엇보다도 다른 딥러닝 프레임워크와는 다르게 "Define-by-run" 체계를 기반으로 합니다. Tensorflow, Caffe, Microsoft의 CNTK 모두 정적 그래프 프레임워크이며 "Define-and-run" 체계 기반입니다. "Define-and-run"은 네트워크(또는 계산 그래프)가 정의되고 고정된 후 미니 배치가 고정된 네트워크에 공급되는 형식이고, "Define-by-run"은 미니 배치가 공급되고 네트워크는 순방향 계산을 통..

    BFS(너비 우선 탐색) 알고리즘

    BFS(너비 우선 탐색) 알고리즘

    BFS(Breadth-First Search)란? 그래프 순회 방법이 대표적으로 DFS와 BFS가 있는데 이번 시간에는 BFS를 알아보도록 하겠다! BFS 알고리즘은 출발 노드로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법이다. 그래프 순회 문제 중 최단 경로를 구하는 문제에 많이 쓰이는 알고리즘이다. DFS 알고리즘은 다음 글을 참고하면 된다. https://yhoons.tistory.com/8 DFS(깊이 우선 탐색) 알고리즘 DFS(Depth-First Search)란?? DFS는 한 방향으로 갈 수 있을 때까지 가다가 더 이상 갈 수 없게 되면 가장 가까운 정점으로 되돌아와서 다른 방향으로 진행하는 그래프 순회 방법이다. 그래프 순회 방법 yhoons.ti..

    DFS(깊이 우선 탐색) 알고리즘

    DFS(깊이 우선 탐색) 알고리즘

    DFS(Depth-First Search)란?? DFS는 한 방향으로 갈 수 있을 때까지 가다가 더 이상 갈 수 없게 되면 가장 가까운 정점으로 되돌아와서 다른 방향으로 진행하는 그래프 순회 방법이다. 그래프 순회 방법에는 대표적으로 DFS와 BFS가 있다. DFS 이해하기 DFS 알고리즘을 구현하는 방법에는 인접 리스트를 이용하는 방법, 인접 행렬을 이용한 방법이 있는데 각각 장단점이 존재한다. 인접리스트를 이용했을 때 장점: 모든 노드를 순환하려 할 때 O(N)시간 밖에 걸리지 않는다. 빈 공간이 생기지 않는다. 단점: 인접한 특정 노드를 알고싶을 때 리스트 안에 일일이 찾아봐야한다. 인접 행렬을 이용했을 때 장점: 인접한 특정 노드를 알고싶을 때 2차원 배열에 정보가 저장돼있기 때문에 한 번에 찾..

    2003번 - 수들의 합 2

    2003번 - 수들의 합 2

    https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 투 포인터 알고리즘의 기본적인 문제라고 할 수 있다. 어떻게 보면 이중 반복문을 사용하여 쉽게 풀 수도 있지만 이는 시간 초과가 날 확률이 높으므로 우린 투 포인터 알고리즘 개념을 사용할 것이다. 투 포인터 알고리즘 개념이 익숙치 않다면- https://yhoons.tistory.com/6 투포인터 알고리즘(Two Pointers Algorithm) - c..

    투포인터 알고리즘(Two Pointers Algorithm) - c++

    투포인터 알고리즘이란? 두 개의 포인터를 각각 이동시키면서 1차원 배열 안 특정 조건에 해당하는 값을 구하는 알고리즘입니다. 알고리즘의 이해 1차원 배열이 있고, 합이 5인 연속적인 부분 수열의 개수를 구하는 문제라고 가정해보겠습니다. 처음 두 개의 포인터는 인덱스 0에 위치해 있고, 각각 start, end 로 구분합니다. ↓ : start ↓ : end ↓↓ 1 2 3 4 5 6 현재 두 포인터 모드 인덱스 0을 가리키고 있으므로 인덱스0부터 0까지의 합은 1입니다. 합을 5로 맞춰야하므로 end 포인터를 오른쪽으로 한 칸 이동시킵니다. ↓ ↓ 1 2 3 4 5 6 현재 start의 인덱스는 0, end는 1을 가리킵니다. 인덱스 0부터 1까지의 합은 3. end포인터를 오른쪽으로 이동 시킵니다. ↓..

    1504번 - 특정한 최단 경로

    1504번 - 특정한 최단 경로

    https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 문제 알고리즘 분류 이 문제는 Dijkstra 알고리즘을 이용하는 문제이다. 다익스트라 개념을 아시는 분들이라면 충분히 활용하여 푸실 수 있을 것 이다. 다익스트라 개념 바로가기 -> https://yhoons.tistory.com/4 다익스트라 알고리즘(Dijkstra algorithm) - c++ 다익스트라 알고리즘이란? 더보기 : 그래프에서 엣지(..

    다익스트라 알고리즘(Dijkstra algorithm) - c++

    다익스트라 알고리즘(Dijkstra algorithm) - c++

    다익스트라 알고리즘이란? 더보기 : 그래프에서 엣지(노드) 간에 최단 거리(가중치 합 최소)를 구하는 알고리즘 그래프 알고리즘 문제에도 많이 쓰이는 알고리즘 중에 하나이며, 실생활에선 네비게이션 알고리즘에도 쓰여 알아두면 좋은 알고리즘이다. 알고리즘 이해 노드 간의 거리를 비교해 나가면서 최단 경로를 구해야하기 때문에 거리를 저장 시켜둘 필요가 있다. 노드 개수가 6개이므로 , 크기가 6인 1차원 배열을 2개 만들어 (거리 정보와 방문 여부)를 저장시켜준다. int distance[7]; bool visited[7] = {0,}; 배열은 인덱스 0번부터 시작하지만 쓴이는 인덱스 0번을 비우고 인덱스와 노드값을 동일하게 사용하려고 7개의 원소를 받는다고 하였다. 우리는 최종 거리에 대한 최솟값을 구해야하기..

    2193번- 이친수

    2193번- 이친수

    https://www.acmicpc.net/problem/2193 DP알고리즘 문제 같은 경우, 어떤 규칙이 반복되는지만 파악한다면 어렵지않게 문제를 해결해나갈 수 있다. 쓴이는 테스트케이스 1부터 어떤 경우가 나오는지 써가며 푸는 편이다. N=1 -> 이친수: {1} N=2 -> 이친수: {10} N=3 -> 이친수: {100}, {101} N=4 -> 이친수: {1000}, {1001}, {1010} N=5 -> 이친수: {10000}, {10001}, {10010}, {10100}, {10101} N=6 -> 이친수: {100000}, {100001}, {100010}, {100100}, {100101}, {101000}, {101001}, {101010} . . . 테스트 케이스를 살펴보면, 이전..