반응형

Archive 76

[자료구조] 트리(Tree), 이진 트리(Binary Tree), 이진 탐색 트리(Binary Search Tree)

[자료구조] Tree vs Binary Tree vs Binary Search TreeTree트리는 스택이나 큐와 같은 선형 구조가 아닌 비선형 자료구조이다. 트리는 계층적 관계(Hierarchical Relationship)을 표현하는 자료구조이다. 이 트리라는 자료구조는 표현에 집중한다. 무엇인가를 저장하고 꺼내야 한다는 사고에서 벗어나 트리라는 자료구조를 바라보자.트리를 구성하고 있는 구성요소들(용어)Node (노드) : 트리를 구성하고 있는 각각의 요소를 의미한다.Edge (간선) : 트리를 구성하기 위해 노드와 노드를 연결하는 선을 의미한다.Root Node (루트 노드) : 트리 구조에서 최상위에 있는 노드를 의미한다.Terminal Node ( = leaf Node, 단말 노드) : 하위에 ..

[자료구조] Stack vs Queue

[자료구조] Stack vs Queue Stack 선형 자료구조의 일종으로 Last In First Out (LIFO). 즉, 나중에 들어간 원소가 먼저 나온다. 이것은 Stack 의 가장 큰 특징이다. 차곡차곡 쌓이는 구조로 먼저 Stack 에 들어가게 된 원소는 맨 바닥에 깔리게 된다. 그렇기 때문에 늦게 들어간 녀석들은 그 위에 쌓이게 되고 호출 시 가장 위에 있는 녀석이 호출되는 구조이다.Queue 선형 자료구조의 일종으로 First In First Out (FIFO). 즉, 먼저 들어간 놈이 먼저 나온다. Stack 과는 반대로 먼저 들어간 놈이 맨 앞에서 대기하고 있다가 먼저 나오게 되는 구조이다. 참고로 Java Collection 에서 Queue 는 인터페이스이다. 이를 구현하고 있는 Pr..

[자료구조] Array vs LinkedList

[자료구조] Array vs LinkedList Array 가장 기본적인 자료구조인 Array 자료구조는, 논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스(index)로 해당 원소(element)에 접근할 수 있다. 그렇기 때문에 찾고자 하는 원소의 인덱스 값을 알고 있으면 Big-O(1)에 해당 원소로 접근할 수 있다. 즉 random access 가 가능하다는 장점이 있는 것이다. 하지만 삭제 또는 삽입의 과정에서는 해당 원소에 접근하여 작업을 완료한 뒤(O(1)), 또 한 가지의 작업을 추가적으로 해줘야 하기 때문에, 시간이 더 걸린다. 만약 배열의 원소 중 어느 원소를 삭제했다고 했을 때, 배열의 연속적인 특징이 깨지게 된다. 즉 빈 공간이 생기는 것이다. 따라서 삭제한 원소보다 ..

[JAVA] 클래스, 변수명 네이밍 규칙

[JAVA] 클래스, 변수명 네이밍 규칙 자바의 식별자자바의 식별자는 변수나 상수, 메서드, 사용자가 정의하는 클래스 등을 구분할 수 있는 이름입니다.자바 식별자 규칙첫 문자가 문자나 '_', '$'의 특수문자로 시작되어야 한다. 숫자로 시작할 수 없다.첫 문자가 아니라면, 문자나 '_', '$'의 특수문자 그리고 숫자로 구성될 수 있다.자바의 예약어는 식별자로 사용할 수 없다.자바의 식별자는 대소문자를 구분한다.식별자 길이는 제한이 없고 공백은 포함할 수 없다.일반적 관례클래스 이름은 대문자의 명사로 시작메서드 이름은 소문자의 동사변수는 소문자의 명사상수는 대문자의 명사올바른 예클래스 이름 : ClassName메서드 이름 : getValue, get_Value변수 이름 : $value, variable..

Archive/JAVA 2018.07.06

[Web] RESTful API 란?

[Web] RESTful API 란? 우선, 위키백과의 정의를 요약해보자면 다음과 같다.월드 와이드 웹(World Wide Web a.k.a WWW)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반에 대한 패턴REST란, REpresentational State Transfer 의 약자이다. 여기에 ~ful 이라는 형용사형 어미를 붙여 ~한 API 라는 표현으로 사용된다. 즉, REST 의 기본 원칙을 성실히 지킨 서비스 디자인은 'RESTful'하다라고 표현할 수 있다.REST가 디자인 패턴이다, 아키텍처다 많은 이야기가 존재하는데, 하나의 아키텍처로 볼 수 있다. 좀 더 정확한 표현으로 말하자면, REST 는 Resour..

Archive/Web 2018.07.06

[JAVA] 객체 지향 프로그래밍이란?

[JAVA] 객체 지향 프로그래밍이란? Object Oriented Programming (OOP) 객체 지향 프로그래밍 이전의 프로그래밍 패러다임을 살펴보면, 중심이 컴퓨터에 있었다. 컴퓨터가 사고하는대로 프로그래밍을 하는 것이다. 하지만 객체지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 할 수 있다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다. 현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것이다. 이것을 추상화라한다. OOP 로 코드를 작성하면 이미 작성한 코드에 대한 재사용성이 높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보 할 수 있다. 또한..

Archive/JAVA 2018.07.06

Git 정리

[기타] Git 사용법 및 개념 정리 1. 설치OS X용 git 다운로드Windows용 git 다운로드Linux용 git 다운로드2. 새로운 저장소 만들기 폴더를 하나 만들고, 그 안에서 아래 명령을 실행하세요. git init 새로운 git 저장소가 만들어집니다.3. 저장소 받아오기 로컬 저장소를 복제(clone)하려면 아래 명령을 실행하세요. git clone /로컬/저장소/경로 원격 서버의 저장소를 복제하려면 아래 명령을 실행하세요. git clone 사용자명@호스트:/원격/저장소/경로 작업의 흐름 여러분의 로컬 저장소는 git이 관리하는 세 그루의 나무로 구성돼있어요. 첫번째 나무인 작업 디렉토리(Working directory)는 실제 파일들로 이루어져있고, 두번째 나무인 인덱스(Index)는 ..

Archive/기타 2018.07.05

[javascript] 자바스크립트의 동작원리

[JS] Javascript 작동 원리에 대해서, Event LoopJavscript를 공부하다 보면 이런 말을 종종 듣는다.싱글스레드 기반으로 동작하는 자바스크립트이벤트 루프를 기반으로 하는 싱글 스레드 Node.js이런 말은 많이 들었지만 구체적으로 내부 원리에 대해 간단하게라도 설명하는 글은 보기 힘들다. (초심자 입장에서는 쉬운 내용이 결코 아니라고 생각한다.) 이번 포스팅에서는 "정말 싱글 스레드인가?", "싱글 스레드의 정체는 무엇이며, 어떻게 싱글 스레드인가?" "이벤트 루프는 또 무엇인가?" 등등에 대해 정말 간단히 알아보기 위해 자바스크립트가 동작하는 환경(Environment)과 자바스크립트를 해석하고 실행시키는 엔진에 대해서 알아본다. Javascript Engine ?일단 한 가지 ..

Archive/Javascript 2018.07.05

[JAVA] String vs StringBuffer vs StringBuilder 비교

[JAVA] String vs StringBuffer vs StringBuilder 비교 □ String- Immutable(불변함)- 한 번 생성되면 할당된 메모리 공간이 변하지 않는다.- 문자열 연산(+, concat) 시, 새로운 String 객체 생성 후 연결된 문자열 저장 및 참조- Heap 메모리 영역(가비지 컬렉션이 동작하는 영역)에 생성- 한 번 생성된 객체의 내부 내용을 변화시킬 수 없다.- 문자열 연산이 많은 경우, 성능이 좋지 않다.- 간단하고 동기화에 대해 신경쓰지 않아도 된다.(Thread-Safe), 내부 데이터를 자유롭게 공유 가능 □ StringBuffer, StringBuilder- Mutable(변함, 변하기쉬움)- 문자열 연산 등으로 기존 객체에 공간이 부족하게 되는 경..

Archive/JAVA 2018.07.04

[ALGOSPOT] 게임판 덮기(BOARDCOVER)

[ALGOSPOT] 게임판 덮기(BOARDCOVER) 게임판 덮기문제답안 제출통계문제 정보문제 ID시간 제한메모리 제한제출 횟수정답 횟수 (비율)BOARDCOVER2000ms65536kb57202631 (45%)출제자출처분류JongMan알고리즘 문제 해결 전략보기문제H*W 크기의 게임판이 있습니다. 게임판은 검은 칸과 흰 칸으로 구성된 격자 모양을 하고 있는데 이 중 모든 흰 칸을 3칸짜리 L자 모양의 블록으로 덮고 싶습니다. 이 때 블록들은 자유롭게 회전해서 놓을 수 있지만, 서로 겹치거나, 검은 칸을 덮거나, 게임판 밖으로 나가서는 안 됩니다. 위 그림은 한 게임판과 이를 덮는 방법을 보여줍니다.게임판이 주어질 때 이를 덮는 방법의 수를 계산하는 프로그램을 작성하세요.입력력의 첫 줄에는 테스트 케이스..

Archive/탐색 2018.07.04
반응형