
10815번. 숫자카드 ▼해설보기 더보기 1. 이진탐색 알고리즘 import sys n = int(sys.stdin.readline()) number_cards = list(map(int, sys.stdin.readline().split())) # 상근이가 가지고 있는 숫자 카드 입력 number_cards.sort() # 이진탐색을 위한 오름차순 정렬 m = int(sys.stdin.readline()) target_numbers = list(map(int, sys.stdin.readline().split())) # 판별해야하는 숫자카드 입력 # 이진탐색을 통해 해당 숫자가 존재하는지 확인한다. # 이진탐색 알고리즘 짜는 걸 연습하기 위해 해당 방법을 사용 # 타겟 숫자를 하나씩 뽑아서 상근이가 가지고..

이진탐색 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법으로 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정한다. 전체 범위에서 4를 찾고 싶기 때문에 시작점은 [0], 끝점은 [9]로 설정하며 중간값은 [4]로 설정한다. 0과 9의 중간값은 4.5 이지만 소수점 이하를 제거하여 [4]로 중간값을 설정한 것이다. 중간점 [4]를 기준으로 오른쪽에 있는 값들은 볼필요 없기 때문에 끝점을 중간점의 왼쪽으로 옮긴다. 그후 중간점은 인덱스[1], 즉 숫자 2이며 우리가 찾고자하는 값 4가 아니다. 2보다 우리가 찾고자 하는 값인 4가 더 크기 때문에 중간점을 기준으로 왼쪽에 있는 값들은 볼 필요가 없게 된다. 따라서 이번에는 시작점 위치를 중간점 오른쪽으로 옮긴다. 시작점[2],..
대표적인 정렬의 종류 O(n²)의 시간 복잡도 (정렬할 자료의 수가 늘어나면 제곱에 비례해서 증가) 선택 정렬(Selection Sort) 버블 정렬(Bubble Sort) 삽입 정렬(Insertion Sort) O(n log n)의 시간 복잡도 병합 정렬(Merge Sort) 퀵 정렬(Quick Sort) 선택 정렬(Selection Sort) 설명 선택정렬 알고리즘은 정렬되어 있지 않은 데이터 중 가장 작은 데이터를 선택하여 맨 앞부터 순서대로 정렬해 나아가는 알고리즘이다. 선택정렬은 정렬된 값을 배열의 맨 앞에서부터 하나씩 채워나가게 된다. 따라서 뒤 index로 갈수록 비교범위가 1씩 감소한다는 특성을 갖는다. 입력 배열이 이미 정렬되어 있거나 말거나 상관없이 동일한 연산량을 갖기 떄문에 최적화의..

validation - 학습이 이미 완료된 모델을 검증하기 위한 데이터셋이다. - 학습이 된 여러 가지 모델 중 가장 좋은 하나의 모델을 고르기 위한 데이터셋이다. - 학습 과정에 어느 정도 관여를 한다고 볼 수 있지만 Validation 데이터 자체가 학습에 직접적으로 관여하는 것은 아니다. loss와 metrics loss: 손실함수. 훈련셋과 연관. 훈련에 사용. metric: 평가지표. 검증셋과 연관. 훈련 과정을 모니터링하는데 사용. model.compile(loss='mse', optimizer='adam', metrics=['mae']) loss와 val_loss 우리의 목적은 학습을 통해 머신 러닝 모델의 underfitting 된 부분을 제거해나가면서 overfitting이 발생하기 직전..
활성화 함수 - relu, sigmoid, linear등 - 기본적으로 y = wx + b를 사용해 노드 수를 계속 곱해 주다보면 값이 너무 커지게 된다. - 시그모이드는 0-1사이의 값으로 값을 한정시켜준다. - 노드와 레이어사이에서 값이 폭발하지 않게 값을 한정시켜준다. - 활성화 함수는 값을 고정시켜서 다음으로 넘어갈때 터지지 않게 해주는 역할을 한다. - 모든 레이어에 존재한다. - model.add(Dense(100, activation = ' linear' ) ⇒ activation 의 default

라이브러리와 프레임워크의 가장 큰 차이점은 누가 누구를 컨트롤하는가이다. 내가 모든 결정을 다 내리고 코드를 컨트롤 하는 것인가? 아니면 누군가 정해준 규칙을 따라 하고 있는가? 라이브러리 프레임워크 내가 코드를 컨트롤하는 것 누군가의 규칙을 따라 코딩하는 것 예를 들어, 라이브러리의 가장 좋은 예시는 JQuery이다. 제이쿼리는 웹사이트에 인터랙티브한 요소를 넣을 수 있는데 내가 필요할 때 "내가" 제이쿼리를 소환하는 것이다. 프레임워크로 일할 때는 프레임 워크의 규칙을 따라야 한다. 이때, 프레임워크가 나에게 규칙을 알려주는 것이다. 즉, 프레임워크가 어디에 코드를 넣어야 하는지, 어디에 템플릿, 컨트롤러, 뷰를 넣는지 등 어떻게 하라고 알려주는 것이다. 프레임워크의 규칙에 따르면 모든 것은 정상 작..

1. 딥러닝은 어디에서부터 왔는가? 딥러닝은 우리 뇌의 신경망 구조를 본뜬 퍼셉트론(Perceptron)에서 부터 출발했다. 딥러닝이 현재 실제로 상용화된 인공지능 서비스까지 닫기에 많은 고난을 거쳤지만(XOR문제, 계산속도 문제, Backpropagation의 등장 등) 현재는, 퍼셉트론에서 시작한 딥러닝이 생활 곳곳에 자리잡고 있다. 딥러닝은 가중치의 학습을 통한 정확한 예측을 목적으로 하고 있다. 2. 딥러닝 가중치는 무엇을 기준으로 학습할까? 무언가를 학습하려면 목적에 알맞게 학습할 필요가 있다. 딥러닝은 Cost 즉, 비용(오류)를 최소화하는 방향으로 학습한다. 이때, 가능한 비용이 적은 부분을 찾는 과정이 최적화(Optimization)이고 Cost(Loss)가 얼마나 있는지 나타내는 것이 C..

인스턴스(Instance) 인스턴스와 객체는 같은 의미이며, 인스터스는 클래스에 의해 만들어진 객체이다. 즉, 클래스는 인스턴스를 만드는 하나의 틀이라고 볼 수 있다. 클래스(Class) 클래스는 변수와 함수를 모아놓은 것이다. 예를들어, 모양틀을 클래스라고 하며 모양틀에 찍혀져서 만들어지는 어떤 모양의 쿠키를 인스턴스라고 한다. 클래스는 틀일 뿐이고, 인스턴스는 틀을 가지고 만들어지 내용물과 같은 것이다. class Student: name = "김철수" def info(self): print("제 이름은 " + self.name + "입니다.") inst = Student() print(type(inst)) inst.info() class Student: name = "김철수" def info(sel..

OCR이란? Optical Character Recognition의 줄임말로, 이미지 내의 글자를 자동으로 인식하는 인공지능 기술을 의미한다. 예를 들어, 카메라를 통해 자동차 번호를 인식한다거나, 신분증에서 개인 정보 텍스트를 인식하는 등의 기술이다. 최근 OCR은 딥러닝으로 인해 큰 발전을 이루고 있다. 전통적인 OCR 파이프라인 OCR은 처음부터 딥러닝을 기반으로 개발된 것은 아니다. 초기 OCR의 파이프라인은 위 그림과 같다. 텍스트 라인을 찾는 모듈, 텍스트를 단어로 나누는 모듈과 등 여러 모듈이 사용된다. 이것은 딥러닝을 사용한 모델과 비교하면 매우 복잡한 것이다. 딥러닝과 OCR 딥러닝의 발전은 OCR에 큰 영향을 끼쳤다. 딥러닝의 핵심이라고 할 수 있는 CNN(Convolutional n..
함수란? 입력값에 따라 결과가 다를수는 있지만 로직 자체는 같은 경우에 하나의 포장지 안에 넣어서 계속 재사용할 수 있게 만들어 놓은것을 함수라 한다. 그렇기 때문에 하나의 로직을 함수로 묶어서 관리하게 되면 좀 더 편리하게 사용할 수 있다. 파이썬에서 함수를 알려주기 위해서는 def 라는 키워드를 사용한다. 그리고 함수에는 입력값이 있고 출력값이 있는데,함수에 따라서 입력값이 있는 함수도 있고, 출력값이 있는 함수도 있으며, 둘다 있거나 둘다 없는 함수도 있다. 다양한 함수 모양 1. 입력도 없고 반환값도 없는 함수 def 함수명() : 수행문장 def func1(): print('BlockDMask') 2. 입력만 있는 함수 def 함수이름(매개변수1, 매개변수2, ... ): 수행문장 def fun..