DB를 설계할 때, 가장 중요하게 생각해야 할 부분이 바로 Entity Relationships이다. 오늘은 Entity Relationships에 대해 소개하고자 한다. 그전에 Entity를 모르는 사람들을 위해 Entity에 대한 정확한 정의를 짚고 넘어가자. Entity 엔터티(Entity)란 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합이다. 즉, 우리가 추적하고 저장하기 위한 두루뭉술한 설계도라고 생각하면 될 것 같다. 엔터티는 Entity Class(엔터티 클래스)와 Entity Instance(엔터티 인스턴스)로 크게 분류가 될 수 있을 것 같다. (위 엔터티 클래스와 엔터티 인스턴스는 파이썬 Class 개념을 생각하면 될 것 같다.) Entity Class(엔터티 클래스)란, ..
웹/파이썬 프로그래밍 강의를 수강하면서 클래스에 대해 다시 한번 나만의 글로 정리할 필요가 있다고 생각하여 오랜만에 피드를 업로드한다. Class 개념 소위 말하는 우리가 말하는 객체 지향 프로그래밍의 시작이자 끝이 바로 Class다. 클래스는 객체(Object)를 표현하기 위한 문법이다. 클래스는 객체의 설계도 또는 큰 틀이라는 개념으로 이해할 수 있는데, 클래스를 통해 만들어진 객체를 인스턴스(Instance)라고 한다. 쉬운 이해를 위해 그림으로 이해해보자.앞서 클래스를 객체의 설계도라고 표현하였다. 위 그림으로 이해하면 클래스는 붕어빵을 만드는 붕어빵 틀이라고 할 수 있고, 붕어빵 틀을 통해 만들어진 붕어빵을 인스턴스라고 한다. 이 같이 객체를 사용한 프로그래밍 객체 지향 프로그래밍(OOP)라..
백준에서 알고리즘 문제를 풀 때, 시간 초과로 인해 문제를 통과하지 못하는 경우가 있다. 이는 작성한 코드의 실행시간이 너무 길게 나와 통과하지 못하는 경우로 알고리즘의 수행 시간을 평가하는 시간 복잡도와 관련이 있다. 빅오(Big-O) 표기법 시간 복잡도는 알고리즘의 수행 시간을 평가하는 것으로 빅오(Big-O) 표기법을 이용하여 알고리즘의 성능을 나타낸다. 우리는 문제에 맞게 최대한 시간 복잡도를 고려하여 가장 효율적인 알고리즘을 선택하여 사용해야 한다. 빅오 표기법의 경우 불필요한 연산을 제거하여 알고리즘 분석을 쉽게 할 목적으로 사용이 된다. 여기서 가장 중요한 것은 중요하지 않은 시간 복잡도를 계산할 때, 중요하지 않은 상수와 계수들을 제거하면 알고리즘 실행시간에서 중요한 성장률에 집중할 수 있..
코딩 테스트 대비에 앞서 기본적인 자료 구조에 대해 학습하고자 한다.자료 구조 설명에 앞서, 해당 자료(링크)를 한번씩 읽어봤으면 좋겠다. 자료 구조에 대한 인사이트를 제공하는 포스트다.(자료 구조에 대한 원론적인 설명은 위 포스트로 대체한다.) 핵심 자료 구조 우리가 다룰 자료 구조는 자료형에 따라 크게 8개로 분류된다. Primitive Data Structure Primitive Data Structure은 프로그래밍에서 데이터를 저장하고 처리하는 가장 기본적인 형태의 구조를 의미한다. 이들은 프로그래밍 언어에 내장된 데이터 타입으로, 일반적으로 추가적인 추상화 없이 메모리에 직접적으로 저장되고 접근한다. Primitive Data Structure은 Integer(정수형), Float(실수형),..
딥러닝에 본격적인 학습에 앞서, 인공 신경망을 정리하지 않는다면 안될 것 같다.. Introduction 아래에 28 by 28 픽셀 데이터가 존재한다. 그리고 우리의 뇌는 이 이미지 데이터를 3이라고 인식한다. 그리고 아래의 경우에도 우리의 각 이미지에 밝기가 다름에도 불구하고 뇌는 아래 세개의 이미지 데이터를 각각 3으로 인식한다. 분명히 우리의 시각피질에서는 각 이미지 3에 대해 받아들이는 정보가 다름에도 불구하고 이를 모두 같은 3이라고 판단하며, 이와 마찬가지로 다른 개념을 가리키는 이미지들도 구별해낸다.(인간 뇌의 위대함이 아닐까 😲) 그러나 만약 아래와 같이 28 by 28개의 입력값을 받아 입력값만으로 숫자를 구분해보라고 한다면, 문제의 난이도는 엄청나게 올라갈 것이다. 그러나 이것은 기..
소위 말하는 딥러닝 구조를 쌓고 연산하기 위해선 텐서(Tensor) 구조에 대해서 선행적으로 알 필요가 있다. 오늘은 딥러닝에 중요한 개념인 텐서(Tensor)에 대해 정리해보고자 한다.(파이토치 기반으로 정리함을 참고하기 바란다!) 텐서(Tensor)의 기본 개념 텐서(Tensor)는 수학적인 개념으로 데이터의 배열이라고 생각하면 된다. 프로그래밍하는 사람들에게는 Numpy 배열이 익숙할 것인데, Numpy 배열과 똑같은 개념이 바로 Tensor라고 생각하면 된다. 텐서는 일반적으로 수치형 데이터를 저장하고 동적인 크기를 갖는다. 텐서(Tensor)의 구조 일반적인 텐서의 구조는 아래 그림과 같다. 여기에는 6차원 Tensor 구조까지 나와있는데, 차원은 게속적으로 높일 수 있는 듯하다. (다만, 시각..