전체 글 37

[딥러닝] 머신러닝과 딥러닝 관계

머신러닝과 딥러닝 관계 머신러닝과 딥러닝 관계 머신러닝은 인공지능에 포함되는 기술이고 머신러닝에는 다양한 알고리즘이 있습니다. 그 중에 하나가 인공신경망 알고리즘인데 딥러닝은 이 인공신경망 알고리즘을 사용하여 만들어졌습니다. 따라서 딥러닝은 머신러닝에 포함되는 기술이라고 볼 수 있습니다. 차이점 머신러닝의 경우 사람이 먼저 특징들을 뽑은 후 컴퓨터에게 학습을 시킵니다. 딥러닝의 경우 데이터를 그대로 주고 스스로 분석하게 하는 방식입니다. 머신러닝은 레코드 파일, 엑셀 등 정형 데이터에 적합하고, 딥러닝은 이미지, 영상 등의 비정형 데이터에 적합합니다.

딥러닝 2019.10.23

[알고리즘] 버블 정렬

버블 정렬 버블 정렬. 인접한 두 원소의 교환을 통해 정렬을 수행합니다. 버블 정렬은 상당히 느린 정렬이지만 코드가 단순하기 때문에 정렬해야하는 대상의 개수가 많지 않을때 자주 사용합니다. 버블 정렬의 시간복잡도는 O(n²) 입니다. EX) 2, 7, 4, 9, 1, 5 를 오름차순으로 정렬하라. 앞에서 부터 두 원소를 차례대로 비교하여 작은수가 왼쪽, 큰수가 오른쪽으로 가게 합니다. 2, 7, 4, 9, 1, 5 -> 7이 2보다 크므로 교환하지 않습니다. 2, 7, 4, 9, 1, 5 -> 4는 7보다 작으므로 교환합니다. 2, 4, 7, 9, 1, 5 -> 9는 7보다 크므로 교환하지 않습니다. 2, 4, 7, 9, 1, 5 -> 1은 9보다 작으므로 교환합니다. 2, 4, 7, 1, 9, 5 ->..

알고리즘 2019.10.21

[알고리즘] 이진 탐색 설명 및 예제(샘플 소스)

이진 탐색 설명 및 예제 이진 탐색은 정렬된 리스트에서 사용할 수 있는 탐색 알고리즘입니다. 탐색 속도가 빠르다는 장점이 있지만 정렬된 상태에서 사용해야 한다는 제약이 있습니다. 이진 탐색의 과정은 다음과 같습니다. 1. 리스트의 중앙에 있는 값을 선택하여 목표 값과 비교합니다. 2. 중앙 값이 목표 값보다 크면 중앙 값의 왼쪽에 대해 이진 탐색을 진행합니다. 3. 중앙 값이 목표 값보다 작으면 중앙 값의 오른쪽에 대해 이진 탐색을 진행합니다. 4. 1~3의 과정을 반복합니다. EX) [1, 2, 3, 4, 5, 6, 7] 이 들어 있는 리스트에서 6을 찾는다고 하면 1. 4을 선택하여 6과 비교합니다. 2. 4는 6보다 작으므로 오른쪽에 있는 [5, 6, 7] 에 대해 이진 탐색을 진행합니다. 3. 중..

알고리즘 2019.10.12

[C++] 메모리 동적 할당, new, delete

C++ 메모리 동적 할당 C++에서 메모리를 동적 할당하는 방법입니다. int* pVal = new int; // 동적 할당 delete pVal; // 해제 new 연산자로 메모리를 동적 할당하고 delete 연산자로 해제합니다. delete를 해주지 않으면 메모리 누수(Memory leak) 문제가 발생하니 꼭 해주는 습관을 가지는게 좋습니다. int* pArrVal = new int[10]; // 배열 할당 delete[] pArrVal; // 배열 해제 배열 형태의 동적 할당도 가능합니다. 해제할때도 역시 배열 형태로 해야합니다.

C++ 2019.10.12

[JAVA] 쓰레드(Thread)

자바 쓰레드 사용 방법 [1] Thread란 병렬 처리 방법 여러 가지 일을 동시에 진행하는 것처럼 보이게 할 수 있습니다. 즉 main thread와 'a' 라는 thread가 있다면 이 둘을 번갈아 가면서 실행하는 것입니다. [2] 코드 pubilc class ex01 { pubilc static void main(String[] args) { Runnable threadJob = new ex02(); Thread myThread = new Thread(threadJob); myThread.start(); System.out.println("1"); } } 1. Runnable 객체를 만듭니다. 2. Thread를 만들고 Runnable 객체를 전달합니다. 3. Thread객체를 실행합니다. publ..

JAVA 2019.10.09

[JAVA] 파일입출력 (버퍼 사용, 파일에 쓰기, 파일 읽기, FileWriter, FileReader)

자바 파일입출력 [1] 텍스트 파일에 쓰기 import java.io.*; public class ex01 { public static void main(String[] args) { try { BufferedWriter writer = new BufferedWriter(new FileWriter("test.txt")); writer.write("Hello"); writer.close(); } catch(Exception ex) { } } } 먼저 'java.io.*' 을 import 해야 합니다. FileWriter만을 이용해서 쓸 수도 있지만 버퍼를 사용하는 것이 훨씬 효율적입니다. FileWriter만을 사용하면 문자열을 전달할 때마다 파일에 쓰기 작업을 하지만 버퍼를 사용하면 버퍼가 꽉 찰 때까지..

JAVA 2019.10.09

[JAVA] 객체를 제거하는 방법

자바 객체 제거 [1] 레퍼런스가 영원히 영역을 벗어남 void A() { School s = new School(); } 메소드가 종료되면 's' 라는 레퍼런스도 죽어버립니다. [2] 레퍼런스에 다른 객체를 대입 School s = new School(); s = new School(); 레퍼런스 's' 에 새로운 객체를 대입하면 첫번째 객체는 버려집니다. [3] 레퍼런스를 직접 'null' 로 설정 School s = new School(); s = null; 's' 를 '해제' 하면 첫번째 객체는 버려집니다. 즉 레퍼런스 's' 가 아무 객체도 참조하지 않는 것입니다. 레퍼런스가 참조하지 않는 객체는 가비지 컬렉션의 대상이 되어 자동으로 정리됩니다.

JAVA 2019.10.09

[JAVA] 생성자, 부모클래스 생성자 호출 방법, super

자바 생성자 [1] 생성자 생성자는 객체를 생성할 때 실행되는 부분입니다. 생성자는 직접 만들지 않더라도 default 생성자가 존재합니다. Dog d = new Dog(); 이렇게 객체를 생성하면 생성자가 호출됩니다. 보통 생성자에서는 객체의 상태를 초기화합니다. 생성자가 인자를 필요로 한다면 다른 메소드들처럼 인자 전달도 가능합니다. 생성자는 리턴 유형이 없습니다. 생성자는 생성자 오버로딩을 이용해 여러개를 만들 수 있습니다. public class Dog { String name; public Dog() { name = "Tom"; } public Dog(String name) { this.name = name; } } public class main { public static void main(..

JAVA 2019.10.09

[JAVA] 인터페이스(interface)

자바 인터페이스 [1] 자바의 Interface 자바에서는 다중 상속을 제공하지 않습니다. 대신 자바에서는 인터페이스 라는 것을 제공하여 다중 상속의 이점을 누릴 수 있도록 해줍니다. 자바 인터페이스는 100% 순수한 추상 클래스와 비슷합니다. 인터페이스의 모든 메소드는 추상메소드입니다. 따라서 인터페이스를 사용하는 클래스는 모든 메소드를 구현해야 합니다. 인터페이스를 정의 하려면 public interface Pet {.......} 인터페이스를 구현하려면 public class Dog implements Pet {........} pubilc interface Shape { public abstract void rotate(); } 인터페이스의 메소드는 자동으로 public abstract가 되므로 ..

JAVA 2019.10.09