문제 링크: www.acmicpc.net/problem/1300www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의 문자열이 N 개 들어온다. 각 문자열은 0 또는 www.acmicpc.net 문제 설명 흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 영상(2차원 배열)에서 같은 숫자의 점들이 한 곳에 많이 몰려있으면, 쿼드 트리에서는 이를 압축하여 간단히 표현할 수 있다. 주어진 영상이 모두 0으로만 되어 있으면 압축 결과..
데이터 사이언스 사용 설명서 검색 결과
공부 내용 정리 자연어란? 자연어는 natural language, ordinary language로써, 사람들이 일상적으로 쓰는 언어를 부르는 개념이다. 인공적으로 만들어진 언어인 인공어와 반대되는 개념이다. 자연어 처리 이해 방법 문장의 컨텍스트(Context)를 이해해야, 문장 안에 있는 단어 한 개 한 개가 어떤 의미인지 알 수 있다. 사람은 'Apple'이 사과인지, 바나나인지 문맥을 통해 바로 구분할 수 있지만 기계는 할 수 없다. 그리고 사람은 '안경'을 검색하면 '눈'이나 '시력'등 단어간 의미가 있는 관계성을 바로 인식할 수 있지만 기계는 어렵다. 그렇기 때문에 단어를 수치로 표현하여 기계가 이해하도록 해야 한다. 이 방법이 바로 Word Embedding인데, 간단히 말해서 텍스트를 숫..
import cv2 import numpy as np import matplotlib.pyplot as plt Contour Contour는 등고선이라는 뜻으로 같은 값을 가진 곳을 연결한 선이라고 생각하면 된다. 이미지에서 Contours는 동일한 색 또는 동일한 강도를 가지고 있는 영역의 경계선을 연결한 선이다. 물체의 모형 분석이나 객체 감지 및 인식 알고리즘에 주로 사용하는 툴이다. 1. 정확도를 높이기 위해 주로 Binary 이미지를 사용한다. 그래서 Contours를 찾기 전에 threshold나 Canny 경계선 탐지 등을 이미지에 먼저 적용한다. 2. cv2.drawContours() 함수는 원본 이미지를 직접 수정하기 때문에, 원본 이미지를 보존하려면 copy() 함수를 사용해야 한다. ..
import cv2 import numpy as np import matplotlib.pyplot as plt 이미지 피라미드 (Image Pyramids) 이미지의 스케일(scale)과 해상도를 조절하는 작업으로 동일한 이미지를 가지고 여러 다양한 크기로 조절하여 작업할 필요가 있을 때도 있다. 예를 들어 이미지에서 사람의 얼굴과 같이 객체에서 특정한 무언가를 탐색하려고 할 때가 대표적이다. 우리가 확보한 얼굴 이미지가 있다고 가정하자. 다른 이미지에서 이 얼굴과 동일한 이미지를 탐색한다고 할 때, 우리가 가진 이미지에서 얼굴 크기와 다른 이미지에서 보이는 얼굴 크기가 다를 수 있다. 이럴 경우에는 탐색 대상 이미지의 해상도를 다단계로 만들어 각 단계에서 얼굴을 탐색하면 좀 더 나은 결과를 보일 수 있..
1. SQL Introduction SQL이란 Structured Query Language의 약어로 관계형 데이터베이스의 데이터를 관리하기 위해서 만들어진 프로그래밍 언어이다. 1974년 IBM 연구소에서 SEQUEL이라는 이름으로 시작했고, 질의어(Query Language)지만 데이터 구조의 정의부터 조작, 제어 기능을 갖추고 있다. Oracle, MySQL 등의 데이터베이스 관련 프로그램들은 이 SQL을 표준으로 사용한다. 2. SQL 분류 SQL은 사용 용도에 따라 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL)의 3가지로 구분된다. 1) 데이터 정의 언어 DOMAIN, INDEX, SCHEMA, TABLE, VIEW 등의 데이터베이스 개체를 정의, 변경 혹은..
지난 포스팅에서는 클라우드 컴퓨팅이 무엇인지와 특징에 대해서 다루어 보았다. 이번에는 클라우드 컴퓨팅이 사람들에게 제공하는 서비스의 종류와, 어느 상황에서 클라우드 컴퓨팅을 사용하게 되는지에 대해서 알아보자. 클라우드 컴퓨팅의 서비스 종류 - IaaS : Infrastructure as a Service의 줄임말이다. 여기에서 Infrastructure(인프라)의 의미는 CPU, 메모리 등의 리소스 자체와 응용체제와 같은 기본적인 프로그램만 설치된 상태로 사용자에게 제공하는 것을 말한다. 즉, 클라우드 서비스를 제공하는 업체에서는 해당 리소스만 제공하고, 나머지는 사용자가 알아서 사용해야 하는 것이다. 사용자가 직접 자신이 원하는 환경을 설정해야해서 번거롭다는 단점이 있지만, 그만큼 자신의 환경에 최적화..
이진트리 (Binary Tree)란? 이진트리는 모든 노드의 차수가 2 이하인 트리를 말한다. 다시 말해 하나의 노드가 가질 수 있는 자식 노드는 최대 2개라는 뜻이다. 이진트리의 종류 이진트리는 형태에 따라 3가지로 분류할 수 있다. 1) 포화 이진 트리(Full Binary Tree) 포화 이진 트리는 모든 레벨의 노드가 가득 차 있는 이진트리를 말한다. 한 노드가 자식 노드를 가지게 된다면 무조건 자식 노드가 2개라는 뜻이다. 이러한 특징 덕분에 포화 이진트리에서 모든 노드의 개수는 다음과 같다. 아래 그림은 포화 이진 트리의 예시이다. 2) 완전 이진트리(Complete Binary Tree) 완전 이진 트리는 높이가 h인 이진트리 일 때 h-1단계까지는 포화 이진트리와 동일하지만 h단계에서 노드..
강화학습(Reinforcement Learning)은 어떤 임의의 존재 (Agent) 가 주어진 환경 내에서 어떻게 행동해야 하는지에 대해 학습하는 것을 말합니다. 이러한 학습 과정은 다양한 상황에서 Agent가 한 행동에 대해, 양 또는 음의 보상으로 피드백을 받음으로써 진행됩니다. 강화학습과 정책(Policy) 강화학습의 최종 목표는 환경(Environment)과 상호작용을 하는 임의의 Agent를 학습시키는 것입니다. Agent는 상태(State)라고 부르는 다양한 상황 안에서 행동(Action)을 취하며 조금씩 학습해 나갑니다. Agent가 취한 행동은 그에 대한 응답으로 양(+)이나 음(-), 또는 0의 보상(Reward)을 돌려받습니다. 여기에서 Agent의 목표는 처음 시작하는 시점부터 종료..
import cv2 import numpy as np import matplotlib.pyplot as plt Canny Edge Detection 경계선 검출 방식에서 가장 많이 사용하는 알고리즘이다. 일반적으로 경계선 검출기는 잡음에 매우 민감한 특성을 가지고 있다. 따라서 잡음으로 인해 잘못된 경계선을 계산하는 것을 방지하기 위해 개발 된 알고리즘이다. Canny 알고리즘은 다음의 5가지 단계를 거친다. 1. Gaussian Filter로 이미지의 잡음을 제거한다. 2. Sobel Filter를 사용하여 Gradient의 크기(intensity)를 구한다. 3. Non-maximum suppression을 적용하여 경계선 검출기에서 거짓 반응을 제거한다. 4. 경계선으로써 가능성 있는 픽셀을 골라내..
1. Introduction Python에서 주로 사용되는 자료구조는 List, Tuple, Set, Dictionary 4종류가 있다. Python은 List를 배열처럼 취급하기 때문에 아이템을 검색하는 데 걸리는 시간은 선형적(Linear)으로 증가한다. 따라서, 용량이 큰 데이터를 저장하기에는 효율성이 떨어진다. Tuple은 List와 달리 변형이 불가능(Immutable)한 리스트로, 검색하는 데 걸리는 시간은 List와 동일하게 데이터 양과 비례하게 증가한다. Set은 List와 Tuple과 달리 순서가 없으며, 중복되는 아이템을 저장할 수 없는 특징이 있어 조회 업무 등에서 사용된다. Dictionary는 키(Key)를 값(Value)에 매핑한다. 같은 Dictionary에 포함된 Key들은 ..
최근댓글