본문 바로가기

[2016 - 2019] 학부 정리/공부

(7)
[알고리즘-공부] 최소편집거리-알고리즘시간 과제2 문제의 출처는 교수님께서 주신 것입니다. 문제 : 과제 : 편집거리 추적부분을 매트릭스로 표현한 자바 코드 짜오기 코드 : public class Main { public int M[][] = new int[100][100]; public int getMin(int a, int b, int c) { int min = a; if (min > b) min = b; if (min > c) min = c; return min; } public int getDistance(String a, String b) { for (int i = 0; i < a.length(); i++) { M[i][0] = i; } for (int j = 0; j < b.length(); j++) { M[0][j] = j; } for (i..
[알고리즘-공부] 비지도학습-알고리즘시간 과제1 비지도 학습에 대해 조사해오고 비지도 학습에서 쓰이는 알고리즘을 파이썬코드로 가져오라시는 교수님의 지령으로 퀘스트를 풀기 시작했다. 파이썬 코드부분은 http://monny.tistory.com/category/Programming/Python 여기서 확인가능합니다~!!
[알고리즘-공부] 5.동적계획법(2) - 연속행렬곱셈 코드로는 이해가 잘 안간다. 책을 봐도 읽기 싫게 생겼다.. 그냥 문제를 풀면서 한번 생각해 보자 우선 책을 읽고 문제를 접하는게 이해하기 쉬울것 같다. 이 알고리즘은 결합법칙이 핵심인것 같다. 첫번째 문제 A1 (10 x 2), A2 (2 x 20), A3 (20 x 5), A4 (5 x 15) 1. 일단 행렬 (1,1) ,(2,2), (3,3), (4,4)에 모두 0을 집어 넣자 2. 첫번째 사선인 (1,2), (2,3), (3,4)의 행렬값을 채워 나가자 A1A2 = (10 x 2) x (2 x 20) = (10 x 20), A1A2의 값 : 10 x 2 x 20 = 400 A2A3 = (2 x 20) x (20 x 5) = (2 x 5), A2A3의 값 : 2 x 20 x 5 = 200 A3A4 ..
[알고리즘-공부] 3. 분할 정복 알고리즘(1) - 합병정렬 분할 정복(Divide-and-Conquer) 알고리즘 이란 주어진 문제의 입력을 분할하여 문제를 해결(정복)하는 방식의 알고리즘이다. 여기서 분할된 입력에 대한 문제를 부분문제라고 하고, 부분문제의 해를 부분해라고 한다. 부분문제는 더 이상 분할 할 수 없을 때까지 계속 분할한다. 입력의 크기가 n일때, 총 몇번을 분할하여야 더 이상 분할할 수 없는 크기인 1이 될까? 분할 한 총 횟수 = k로 두고, 1번 분할 후 각각의 입력 크기 = 라고 한다면 입력크기는 씩 분할됨을 알 수 있다. 따라서 이라는 식을 세울 수 있고, 결국 분할 총 횟수 임을 알 수 있다. 분할 정복 알고리즘은 분할, 정복, 결합의 과정을 거친다. 분할 정복 알고리즘에서 가장 중요한 것은 '문제를 나누는 것'이다. 문제를 제대로 나..
[알고리즘-공부] 1.알고리즘의 첫걸음(2) 1.3 동전 거스름돈 : 그리디(Greedy) 알고리즘 -> 4장에서 설명! 동전 거스름돈 문제를 해결하는 알고리즘은 남은 거스름돈 액수를 넘지 않는 한도에서 가장 큰 액면의 동전을 계속하여 선택하는 것이다. 1.4 한붓그리기 : 오일러 서킷(Euler Circuit) 알고리즘의 핵심은 현재 점에서 다음으로 이동 가능한 점을 선택할 때에는 반드시 현재 점으로 돌아오는 사이클이 존재하여야 한다는 것이다. (한 점을 여러번 방문 할 수 있다.) 한붓그리기?? 한붓그리기는 연결되어 있는 선이 홀수개인 점이 아예 없거나 두 개만 있는 도형 위에서만 가능하다. 1.5 미로 찾기 : 오른손 법칙 현 위치에서 한 방향을 선택하고, 벽에 오른손을 댄다. 그리고 출구가 나올 때까지 계속 오른손을 벽에서 떼지 않고 걸어간..
[알고리즘-공부] 1. 알고리즘의 첫걸음(1) - 순차탐색, 이진탐색 1.1 최대 숫자 찾기 : 순차탐색 가장 큰 숫자가 적힌 카드를 찾는 한 가지 방법은 카드의 숫자를 하나씩 비교하면서 본 숫자들 중에서 가장 큰 숫자를 기억해가며 진행하는 방법이다. 마지막 카드의 숫자를 본 후에, 머릿속에 기억된 가장 큰 숫자가 적힌 카드를 바닥에서 집어든다. 순차탐색 : 카드를 한 장씩 차례대로 읽어가며 찾는 방법 ex) 17, 92, 18, 33, 58, 7, 33, 42 중 최댓값을 찾기 코드로 생각해보자 #최댓값 구하기 #입력 : 숫자가 n개 들어 있는 리스트 #출력 : 숫자 n개 중 최댓값 def find_max(arr): n = len(arr) #입력크기 n max_arr = arr[0] #리스트의 첫 번째 값을 최댓값으로 기억 for i in range(1,n): #1부터 ..
[알고리즘 - 공부] 0. 파이썬 설치 알고리즘들을 파이썬으로 짜보려 합니다. (교수님....ㅠ) 파이썬 설치부터 해보죠. 방법은 초초 간단 합니다. (1) http://python.org/download 에서 파이썬 내려받기 페이지가 열리면 Download Python 3.6.0 버튼을 누름 (2) 페이지 아래에 프로그램의 안정성에 대한 경고와 실행 여부를 묻는 창이 뜨면 실행 버튼을 누름 (3) 내려받기를 마치면 파이썬 설치 마법사가 실행됨 Install Now를 눌러 설치를 시작 (4) 사용자 계정 컨트롤 창에 보안 경고가 뜨면 예 버튼을 누름 (5) 프로그램이 모두 설치되면 설치 마법사 창에 Setup was successful이 나타남 Close 버튼을 눌러 마법사 창을 닫음 ----설치끝 (6) 윈도 10의 왼쪽 아래에 있는 ‘ W..