분류 전체보기 200

[알고리즘] 분할정복(Divide & Conquer)

의 해당 단원 밑줄입니다. "분할 정복을 사용하는 알고리즘들은 대개 세 가지의 구성 요소를 갖고 있습니다. 문제를 비슷한 크기의 더 작은 문제로 분할하는 과정(divide) 각 문제에 대해 구한 답을 원래 문제에 대한 답으로 병합하는 과정(merge) 더이상 답을 분할하지 않고 곧장 풀 수 있는 매우 작은 문제(base case)" "같은 문제라도 어떻게 분할하느냐에 따라 시간 복잡도 차이가 커진다는 것을 보여주는 좋은 예입니다. 여러번 중복되어 계산되면서 시간을 소모하는 부분 문제들이 있기 때문입니다." ​​ 병합 정렬 (Merge Sort) 수열을 가운데에서 쪼개 두 개의 부분수열로 만들고, 각 부분 수열에 대해서도 같은 절차를 재귀 호출한다. 기저 사례(base case)까지 쪼개 값이 반환되면, ..

[알고리즘] 완전탐색(CLOCKSYNC)

algospot.com :: CLOCKSYNC Synchronizing Clocks 문제 정보 문제 그림과 같이 4 x 4 개의 격자 형태로 배치된 16개의 시계가 있다. 이 시계들은 모두 12시, 3시, 6시, 혹은 9시를 가리키고 있다. 이 시계들이 모두 12시를 가리키도록 �� algospot.com #include #include #include using namespace std; queue answer; const int button[10][5] = { {0, 1, 2, -1, -1}, {3, 7, 9, 11, -1}, {4, 10, 14, 15, -1}, {0, 4, 5, 6, 7}, {6, 7, 8, 10, 12}, {0, 2, 14, 15, -1}, {3, 14, 15, -1, -1}, ..

[알고리즘] 완전탐색(BOARDCOVER)

algospot.com :: BOARDCOVER 게임판 덮기 문제 정보 문제 H*W 크기의 게임판이 있습니다. 게임판은 검은 칸과 흰 칸으로 구성된 격자 모양을 하고 있는데 이 중 모든 흰 칸을 3칸짜리 L자 모양의 블록으로 덮고 싶습니다. 이 �� www.algospot.com #include #include #include using namespace std; queue answer; int row, col; int matrix[20][20]; int run() { /* 왼쪽 위 부터 탐색하여 비어있는 칸을 x,y에 저장 * flag 지정하여, 찾는 즉시 반복문 탈출 * x, y가 반복문을 그대로 통과하면 모두 채워졌다는 의미 >> 1을 반환(result에 더해짐) */ int x = -1; int ..

[알고리즘] 완전탐색(PICNIC)

algospot.com :: PICNIC 소풍 문제 정보 문제 안드로메다 유치원 익스프레스반에서는 다음 주에 율동공원으로 소풍을 갑니다. 원석 선생님은 소풍 때 학생들을 두 명씩 짝을 지어 행동하게 하려고 합니다. 그런데 서로 www.algospot.com #include #include using namespace std; queue answer; // matrix에 친구 관계, paired에 친구가 있는지 여부 저장 int matrix[10][10]; int paired[10]; int student_num, pair_num; int makePair() { // 짝이 없는 학생이 있다면 idx에 저장하고, 모두 짝이 있다면 1을 반환 int idx = -1; for (int i = 0; i < stu..

[알고리즘] 무식하게 풀기(Brute-Force)

의 해당 단원 밑줄입니다. "공부를 열심히 할수록 복잡하지만 우아한 답안을 만들고 싶은 마음이 커지기 마련이고, 그래서 바로 앞에 보이는 쉽고 간단하며 틀릴 가능성이 낮은 답안을 간과하기 쉽습니다." "컴퓨터의 최대 장점은 결국 속도가 빠르다는 것이니까요. 특히 현실 세계의 문제 중에는 입력의 크기가 작아 컴퓨터가 처리하기에는 별 것 아니지만, 손으로 직접 풀기에는 경우의 수가 너무 많은 경우가 종종 있는데, 이럴 때 완전탐색(가능한 방법을 전부 만들어 보는 알고리즘)은 충분히 빠르면서도 가장 구현하기 쉬운 대안이 됩니다." "우리가 들여다 보는 범위가 작아지면 작아질수록 각 조각들의 형태가 유사해지는 작업들을 많이 볼 수 있습니다. 이런 작업을 구현할 때 유용하게 사용되는 개념이 바로 재귀 호출입니다...

[모두를 위한 딥러닝] 로지스틱 회귀

공부시간(X)을 늘리면 더 좋은 성적(Y)을 받는 것은 통계적으로 합당할 것이다. 1시간 공부한 사람은 20점, 3시간 공부한 사람은 60점, 4시간 공부한 사람은 80점을 받고, 이는 선형적인 관계에 있다고 할 수 있다. 하지만 모든 데이터가 항상 이런 선형적인 관계에 있는 것은 아니다. 로지스틱 회귀 합격과 불합격으로만 결과가 나오는 P/F 상황을 가정해보자. 1시간 ~ 3시간 공부한 사람은 불합격을 받고, 4~6시간 공부한 사람은 합격을 받았다. 합격=1, 불합격=0 으로 봤을 때 다음 상황을 X=[1, 2, 3, 4, 5, 6], Y=[0, 0, 0, 1, 1, 1] 로 말할 수 있고, 이 데이터를 학습에 이용할 수 있을 것이다. 평소처럼 우리가 H(X) = X*W + b로 가정을 한다면 다음과 ..

💻/ML 2020.07.27

[모두를 위한 딥러닝] 텐서플로우 기초, 선형회귀

import tensorflow as tf # 데이터에 랜덤한 값을 하나 넣고, 이름을 'weight', 'bias'로 붙여준 Variable을 생성한다. W = tf.Variable(tf.random_normal([1]), name = 'weight') b = tf.Variable(tf.random_normal([1]), name = 'bias') # 들어올 데이터의 타입은 float32, shape은 아직 정해지지 않은 placeholder를 생성한다. X = tf.placeholder(tf.float32, shape=[None]) Y = tf.placeholder(tf.float32, shape=[None]) 텐서플로우는 '텐서(Tensor)'를 이용해서 그래프를 구성하고, 그래프에 데이터를 넣어 ..

💻/ML 2020.07.26

[모두를 위한 딥러닝] 작업환경 설정(파이썬, 텐서플로우)

구성확인 파이썬과 텐서플로우(GPU)를 이용해서 예제를 연습할 것이다. 먼저 tensorflow 홈페이지에서 조합표(?)를 보고 어떤 버전을 설치할지 정해야 나중에 처음부터 다시하는 일이 없을 것이다. https://www.tensorflow.org/install/source_windows Windows의 소스에서 빌드 | TensorFlow 소스에서 TensorFlow pip 패키지를 빌드하고 Windows에 설치합니다. 참고: 잘 테스트되고 사전 빌드된 Windows 시스템용 TensorFlow 패키지가 이미 제공되고 있습니다. Windows용 설정 다음 빌드 도구를 설치�� www.tensorflow.org 설치방법 버전이 결정되었다면, 아래 영상을 그대로 따라 하는 것이 오류 없이 깔끔하다. ht..

💻/ML 2020.07.26

[모두를 위한 딥러닝] 인공지능, 머신러닝

인공지능 우리에게 인공지능은 더이상 낯설지 않다. 인공지능(AI)은 인간이 하는 사고나 행동의 과정을 따라 기능하도록 구현한 시스템을 말한다. 우리가 좋아할 만한 동영상을 추천해주는 유튜브 알고리즘도, 얼굴을 인식해서 잠금을 풀어주는 스마트폰도 인공지능이다. 직관적인 판단이 필요한 바둑에서, 정점에 위치한 프로기사를 꺾어 수많은 사람들에게 충격을 주었던 '알파고' 역시 인공지능이다. 그렇다면 어떻게 인공지능은 우리가 원하는 것을 찾아내고, 얼굴을 알아보다 못해, 바둑에서 이세돌을 이길 수 있었던 것일까? 머신러닝 인공지능의 핵심에는 '학습'이라는 요소가 있다. 인공지능은 환경과 상호작용하며 정보를 얻는다. 그리고 그 정보를 이용해 목적에 맞게 예측하거나 새로운 규칙을 찾을 수 있도록 학습한다. 이 과정을..

💻/ML 2020.07.26

[머신러닝] 공부 시 참고 링크

머신러닝 공부 순서, 방법 및 강의 정리 이번 포스팅에서는 작년부터 머신러닝 공부를 시작하면서 들었던 강의와 머신러닝 공부 방법에 대해서 정리해보려고 한다. 필자도 아직 머신러닝을 마스터하려면 갈 길이 멀었지만, 그간 공부� gomcine.tistory.com 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 강화학습 알아보기(1) - 가치 함수 · greentec's blog 강화학습 알아보기(1) - 가치 함수 10 Feb 2019 • 0 Comments 강화학습이란? 2016년에 있었던 딥마인드의 알파고(AlphaGo)와 이세돌 9단의 대국은 인공지능이 세계 최초로 프로 최고수급의 인간을 바둑에�� greentec.github.io 1. 파이썬(Python) 및 텐서플로우(Tensor..

💻/ML 2020.07.25