Developing Myself Everyday
article thumbnail
순열 (Permutation) & 조합 (Combination)

순열이란? 수학에서 순열(Permutation) 또는 치환은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. 즉, 순열은 정의역과 공역이 같은 일대일 대응이다. n개의 원소의 순서를 뒤섞는 순열의 개수는 n의 계승 n!와 같다. 즉, n 이하의 양의 정수들을 곱한 값이다. 쉽게 말하자면 서로 다른 n개중에서 r개를 선택하는 경우의 수이다. 1. Swap 을 이용한 순열 첫번째는 swap 함수를 만들어서 배열들의 값을 직접 바꾸는 방법이다. 배열의 첫 값부터 순서대로 하나씩 바꾸며 모든 값을 한번씩 swap 한다. depth 를 기준 인덱스로 하여 depth 보다 인덱스가 작은 값들은 그대로 고정하고 depth 보다 인덱스가 큰 값들만 가지고 다시 swap 을 진행한다. 하지만 이 방식은 사전 ..

article thumbnail
컴퓨터 구조(2) - CPU

CPU(Central Procesing Unit) CPU는 명령어의 해석과 자료의 연산, 비교등의 처리를 제어하는 컴퓨터 시스템의 핵심장치이다. 위의 그림이 우리가 배워야할 CPU의 구조이다. 그림만 봤을때는 이게 무엇을 말하는지 이해가 안되는것이 당연하다. 그렇지만 CPU의 구성 요소들을 하나하나씩 배워가면서 어떻게 진행되는지 이해를 하고 다시 봤을때는 매우 쉬운 그림이 될 것이다. CPU의 구성 요소 1. ALU(Arithmetic and Logical Unit) ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다. 그렇게 받아들인 피연산자와 제어 신호로 산술연산, 논리 연산 등 다양한 연산을 수행한다. ALU가 연산을 수행한 결과는 바로 메모..

article thumbnail
컴퓨터 구조(1) - 시작하기

컴퓨터 구조를 알아야하는 이유 언뜻 보면 컴퓨터 구조는 프로그램 개발과는 큰 관련이 없어 보인다. 우리는 컴퓨터 구조를 모르더라도 지금까지 프로그램을 개발해왔기 때문이다. 하지만 좋은 개발자가 되기 위해서는 반드시 컴퓨터 구조를 깊게 이해하고 있어야 한다. 만약 우리가 개발한 프로그램에 사용자가 많아졌다고 생각을 해보자. 이때 우리는 사용자의 정보, 게시글 등을 저장할 저장 장치를 선택해야 한다. 우리는 이때 우리가 스스로 판단해서 장치를 선택해야 한다. 이건 프로그래밍 언어만 안다고 해서 해결할 수 있는 것이 아니다. 우리는 컴퓨터 구조를 이해해서 이런 성능, 용량, 비용 문제를 고려해 개발하여야 한다. 컴퓨터의 구성요소 컴퓨터의 구성 요소는 다음과 같다. 4가지 핵심 부품은 CPU, Memory, I..

article thumbnail
Queue & Stack

Queue 먼저 들어간 자료가 먼저 나오는 자료구조이다. FIFO(First In First Out, 선입선출) 또는 LILO(Last In Last Out, 후입후출) 라는 구조를 갖는다. Method Description add(E e) Queue에 객체를 추가한다. Queue의 남아 있는 space가 없을 경우 exception을 throw한다. element() Queue에 가장 먼저 들어간 객체를 return한다. offer(E e) Queue에 객체를 추가한다. 이때는 exception을 발생시키지 않고 성공 여부에 대해 return한다. peek() Queue에 가장 먼저 들어간 객체를 제거하지 않고 확인한다. poll() Queue에 가장 먼저 들어간 객체를 제거하고 해당 객체를 retur..

article thumbnail
List, Set, Map to Kotlin

우리는 자료구조를 분류할때 선형과 비선형을 기준으로 분류를 했었다. 그리고 분류한 자료구조들을 하나씩 공부해나갈 예정이다. 하지만 그 전에 Collection에있는 List, Set, Map을 학습하고자 한다. Kotlin에는 크게 List, Set, Map 3가지 Collection이 있다. 이 3가지 Collection은 중복을 허용하는지, 순서가 보장되는지에 따라 구분할 수 있다. 참고로, Kotlin Collection은 Mutable Collection과 Immutable Collection으로 구분해 사용한다. 둘의 차이는 변경이 가능한가, 불가능한가이다. List, Set, Map 모두 Mutable과 Immutable Collection을 지원한다. List List는 데이터가 저장될때 필..

article thumbnail
자료구조의 분류

자료구조란? 자료구조는 서비스나 어플리케이션에서 필요한 데이터를 메모리에 어떻게 구조적으로 잘 정리해서 담아두고 관리하고 최종적으로 가장 효율적인 방식으로 필요한 데이터에 빠르게 접근하고 필요한 수정, 삽입, 삭제를 할 수 있도록 도와준다. 서비스에서 Client에게 데이터를 제공하거나 어플리케이션에서 사용자에게 필요한 데이터를 보여주거나 효율적으로 일을 처리하기 위해서는 적합한 자료구조를 사용하는 것이 정말 중요하다. 좋은 개발자가 되기 위해서는 memort effciency에 포커스를 맞춰서 알고리즘과 자료구조를 잘 공부해야 할 것이다. 자료구조의 분류 기본적인 자료구조를 선형, 비선형 구조로 나눴을때 우리가 알아야 하는 것들이다. 자료구조를 공부할때 우리는 자료 구조 안에 있는 데이터들의 순서가 보..

article thumbnail
DATABASE(6) - Database Server, Database Client

생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org Internet과 DATABASE의 관계 만약 DATABASE로 일을 하려고 한다면 2가지가 필요할 것이다. Database Server Database Client DATABASE는 Client 와 Server 모델을 따르며 다수의 Client들은 하나의 서버에 연결될 수 없다. Database Server는 Backend에서 작동하는 소프트웨어이며 DATABASE가 만들어지고 저장되는 장소이다...

article thumbnail
DATABASE(5) - 관계형 DB의 핵심 기능 JOIN

생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org JOIN 위에는 author와 topic 테이블이 생성되어져 있다. 우리가 하고 싶은것은 이 2개의 테이블을 결합하는 것이다. 두 개의 테이블을 자세히 보면 id 값이 서로 연결되어 있다는 것을 알 수 있다. 그래서 우리는 이것을 이용해서 다음과 같이 두 개의 테이블을 JOIN 할 수 있다. SELECT * FROM topic LEFT JOIN author ON topic.author_id = au..