달력

8

« 2020/8 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  


 

 

선형 구조를 가지는 자료구조

구분

설명

스택

(Stack)

스택 자료구조에 먼저 저장된 것이 제일 나중에 나오게 됩니다.

(Queue)

스택과 반대로 가장 최근에 저장된 것이 제일 먼저 나옵니다.

환영

(Circular Queue)

 

한정된 길이 안에서 부수적인 작업없이 읽고 쓰기를 있는 큐입니다.

(Deque)

양쪽에서 넣기와 빼기를 있는 일반화된 선형구조입니다.

 

 





Posted by codedragon codedragon

댓글을 달아 주세요

 

 

트리(tree) 구조

·       노드(Node)

·       부모와 자식, 그리고 형제

·       경로(Path)

·       깊이(Depth)

·       차수(Degree)

 

 

 

 

노드(Node)

·       트리는 노드(Node, 마디) 구성되어 있습니다.

·       노드는 서로 부모-자식 관계로 연결되어 있습니다.

·       트리 자료구조에서는 부모노드가 여러 개의 자식노드를 가질 있습니다.

 


 

Node

·       노드, 마디

·       트리의 이루는 구성요소

Root

·       뿌리, 루트

·       트리의 근간이 되는 노드로 최상위에 존재

Leaf

·       잎노드, 단말노드(Terminal)

·       트리의 가장 끝에 위치하고 있는 노드

Branch

·       가지

·       루트와 잎노드 사이에 있는 노드

 

 

 

 

부모와 자식, 그리고 형제

·       B C D 부모(Parent)이고, C D B 자식(Children)

·       C D 형제(Sibling)


 

 

 

 

경로(Path)

·       B, D, F”는 B에서 F까지의 경로

 


 

 

 

 

 

깊이(Depth)

·       루트 노드에서 해당 노드까지의 경로의 길이

·       레벨(Level) 같은 깊이를 가지는 노드의 집합을 일컫는

·       높이(Height) “가장 깊은 곳”에 있는 노드까지의 깊이

 


 

 

 

 

 

차수(Degree)

·       자식 노드의 개수

·       트리의 차수는 트리 내에 있는 노드들 가운데 자식 노드가 가장 많은 노드의 차수를 말합니다.

 


 

A 3차수, B 2차수, D 2차수, G 1차수, I 1차수, J 1차수

 

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

컬렉션 생성(Kotlin)

kotlin.collections 패키지 안에 JCF(Java Collection Framework) 클래스와 매칭되는 클래스와 코틀린에 추가된 클래스들이 존재합니다.

type

함수명

수정가능 여부

반환 타입(실제 타입

List

listOf()

X (immutable)

kotlin.collections.List

List

mutableListOf()

O (mutable)

kotlin.collections.MutableList

List

arrayListOf()

O

kotlin.collections.ArrayList

(java.utlil.ArrayList)

 

 

 

 

Set

setOf()

X

kotlin.collections.Set

Set

mutableSetOf()

O

kotlin.collections.MutableSet

Set

hashSetOf()

O

kotlin.collections.HashSet

(java.utlil.HashSet)

Set

linkedSetOf()

O

kotlin.collections.LinkedHashSet

(java.utlil.LinkedHashSet)

Set

sortedSetOf()

O

kotlin.collections.TreeSet

(java.util.TreeSet)

 

 

 

 

Map

mapOf()

X

kotlin.collections.Map

Map

mutableMapOf()

O

kotlin.collections.MutableMap

Map

hashMapOf()

O

kotlin.collections.HashMap

(java.utlil.HashMap)

Map

linkedMapOf()

O

kotlin.collections.LinkedHashMap

(java.util.LinkedHashMap)

Map

sortedMapOf()

O

kotlin.collections.SortedMap

(java.util.SoredMap)

 

intellij IDE에서 임포트한 클래스의 정의 부분을 보면 Kotlin Java Collections typealias 매핑된 것을 확인할 있습니다.

 

C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.2.4\plugins\Kotlin\kotlinc\lib\kotlin-stdlib-sources.jar!\kotlin\collections\TypeAliases.kt


 


 

 

 

TypeAliases.kt

/*

 * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license

 * that can be found in the license/LICENSE.txt file.

 */

 

@file:Suppress("ACTUAL_WITHOUT_EXPECT") // for building kotlin-stdlib-minimal-for-test

 

package kotlin.collections

 

@SinceKotlin("1.1") public actual typealias RandomAccess = java.util.RandomAccess

 

 

@SinceKotlin("1.1") public actual typealias ArrayList<E> = java.util.ArrayList<E>

@SinceKotlin("1.1") public actual typealias LinkedHashMap<K, V> = java.util.LinkedHashMap<K, V>

@SinceKotlin("1.1") public actual typealias HashMap<K, V> = java.util.HashMap<K, V>

@SinceKotlin("1.1") public actual typealias LinkedHashSet<E> = java.util.LinkedHashSet<E>

@SinceKotlin("1.1") public actual typealias HashSet<E> = java.util.HashSet<E>

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Collection 타입

·         kotlin.collections 패키지에는  Iterable, Collection, List, Set, Map 클래스하며 이클래스는 컬렉션 타입의 클래스입니다.

·         Collection 타입의 클래스들은 mutable객체(Read/Write) immutable 객체(Read Only)형태로 구분됩니다.

·         kotlin.collection.List 인터페이스로 표현되는 객체는 immutable형태이므로 size(), get() 함수만 제공됩니다.

·         kotlin.collection.MutableList 인터페이스로 표현되는 객체는 mutable형태이므로 size(), get() 함수 이외에 add(), set() 같은 함수도 제공됩니다.

 

 

 

상속도

수정 ...


 


 

 

 

Package kotlin.collections

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/index.html

 

 

 

 

Iterable

interface Iterable<out T>

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-iterable/index.html#kotlin.collections.Iterable

 

 

 

 

Collection

interface Collection<out E> : Iterable<E>

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-collection/index.html#kotlin.collections.Collection

 

 

 

MutableCollection

interface MutableCollection<E> : 

    Collection<E>, 

    MutableIterable<E>

 

 

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-collection/index.html

 

 

 

MutableIterable

interface MutableIterable<out T> : Iterable<T>

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-iterable/index.html

 

 

 

MutableList

interface MutableList<E> : List<E>, MutableCollection<E>

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-list/index.html

 

 

 

List

interface List<out E> : Collection<E>

 

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html#kotlin.collections.List

 

 

 

 

Set

interface Set<out E> : Collection<E>

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html#kotlin.collections.Set

 

 

 

Map

interface Map<K, out V>

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html#kotlin.collections.Map

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

자료구조(data structure)

·       자료의 집합을 의미합니다.

·       자료를 효율적으로 컴퓨터에 저장하는 방법입니다.

·       자료(데이터) 어떻게 관리하고 처리하느냐에 대한 방법입니다.

·       원소들 사이의 관계가 논리적으로 정의된 일정한 규칙에 의하여 나열되며 자료에 대한 처리를 효율적으로 수행할 있도록 자료를 조직적, 체계적으로 구분하여 표현한 것을 나타냅니다.

 

 

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

재귀 호출의 문제점 - 자원 효율성

시간과 메모리 공간의 효율이 저하될 있기 때문에 개발에 신중을 기해야 합니다

 

 

 

재귀 호출시 무한루프 문제 해결

·         자기가 자신을 호출할 있기 때문에 무한루프 문제가 발생할 있습니다. 재귀함수의 문제를 해결하기 위해 함수를 종료하고 반환할려면 return 추가해야 합니다.

·         재귀함수 호출 전에 종료하기 위한 조건 반드시 수행해주어야 합니다.

 

 

 

재귀적 함수 호출 조건

아래의 조건이 만족되어야 정상적인 결과를 얻을   있습니다.

·         재귀 호출

·         반드시 종결 조건

·         종결 조건이 만족할 때의 반환

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

윤년(Leap year)

1년은 366일이 되며 이것이 바로 윤년이다. 지구가 태양을 바퀴 도는 데에는 365 5시간 48 46초가 걸리므로 365일을 제외한 시간들을 모아 태양력에서는 4년마다 2 29일을 두어 하루를 늘리고, 태음력에서는 평년이 354일이므로 계절과 역월(曆月) 조절하기 위하여 19년에 7번의 비율로 윤달을 끼워 1년을 13개월로 한다. 윤년이 아닌 해는 평년이라고 합니다.

http://bit.ly/2Sf4jrM

https://en.wikipedia.org/wiki/Leap_year

 

 

 

윤년에 대한 sudo code 알고리즘

if (year is not divisible by 4) then (it is a common year)

else if (year is not divisible by 100) then (it is a leap year)

else if (year is not divisible by 400) then (it is a common year)

else (it is a leap year)

http://bit.ly/2Sb1fNj

 

 

 

 

윤년 조건

조건을 만족해야 윤년입니다.

윤년 조건(1) 4 나누어 떨어지고, 100으로 나누어 떨어지지 않으면 윤년

윤년 조건(2) 400으로 나누어 떨어지면 윤년

 

 

 

 


 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

NPE(NullPointException)

·       Tony Hoare(토니 호어) 실수로 null 참조를 1965년에 처음 고안한 것으로 알려져 있습니다.

·       현재 null참조로 인해 다양한 언어에서 문제가 발생하기도 합니다.

 

Apologies and retractions

Speaking at a software conference called QCon London in 2009, he apologised for inventing the null reference:[23]

 

I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.

 

 

For many years under his leadership his Oxford department worked on formal specification languages such as CSP and Z. These did not achieve the expected take-up by industry, and in 1995 Hoare was led to reflect upon the original assumptions:[24]

 

Ten years ago, researchers into formal methods (and I was the most mistaken among them) predicted that the programming world would embrace with gratitude every assistance promised by formalisation to solve the problems of reliability that arise when programs get large and more safety-critical. Programs have now got very large and very critical well beyond the scale which can be comfortably tackled by formal methods. There have been many problems and failures, but these have nearly always been attributable to inadequate analysis of requirements or inadequate management control. It has turned out that the world just does not suffer significantly from the kind of problem that our research was originally intended to solve.

 

 


 

 

Tony Hoare(토니 호어)

http://codedragon.tistory.com/7976

 

 

 

null pointer

https://en.wikipedia.org/wiki/Null_pointer

 


Posted by codedragon codedragon

댓글을 달아 주세요

 

 

key-value pair (키와 값의 )

(Key) 데이터 그룹 중에서 특정 (Value) 찾는데 열쇠가 된다는 의미로 붙여졌습니다. 그렇기 때문에 특정 값에 찾는 열쇠는 중복될 없습니다.

 

(, )

(key, value)

 

 

name="코드드레곤"

age=27

nation="korea"

 

 



Posted by codedragon codedragon

댓글을 달아 주세요

 

 

알고지즘을 표현하는 기본 스텝

·         알고리즘 구상

·         알고리즘을 의사 코드(pseudo code) 작성

·         의사 코드(pseudo code) 자바코드로 작성

 

1부터 N까지 더하는 재귀 함수

1부터 4까지의 합을 구하는 알고리즘 구상

1

1부터 4까지의 합은 1부터 3까지의 합에 4 더하면 됩니다.

2

1부터 3까지의 합은 1부터 2까지의 합에 3 더하면 됩니다.

3

1부터 2까지의 합은 1부터 1까지의 합에 2 더하면 됩니다.

4

1부터 1까지의 합은 그냥 1입니다.

 

 

 

알고리즘을 의사 코드(pseudo code) 작성

시작

    1. n 1 아니면, n 1부터 (n-1)까지의 합을 더한 값을 반환

    2. n 1이면, 그냥 1 반환

 

 

 

의사 코드(pseudo code) 자바코드로 작성

public static int recursiveSum(int n) {

// n 1이면, 그냥 1 반환

if (n == 1) {

return 1;

}

// n 1 아니면, n 1부터 (n-1)까지의 합과 더한 값을 반환

return n + recursiveSum(n - 1);   

}

 

 


Posted by codedragon codedragon

댓글을 달아 주세요