
이번 장에서는 코틀린 클래스 다루는 방법을 살펴본다. 자바와 달리 코틀린은 인터페이스에 프로퍼티 선언이 들어갈 수 있고, 선언이 기본적으로 final이며 public이다. 또한 내포 클레스(nested class, 중첩 클래스)는 기본적으로 내부 클래스가 아니다.

다음은 코틀린으로 "Hello World!"를 출력하는 함수이다. 여기서 찾을 수 있는 코틀린 문법의 특성은 다음과 같다.함수를 선언할 때 fun 키워드를 사용한다.함수를 모든 코틀린 파일의 최상위 수준에 정의할 수 있으므로 클래스 안에 함수를 넣을 필요는 없다. 즉,

Kotlin은 JVM(자바 가상머신) 플랫폼과 JVM외의 다른 플랫폼에서 돌아가는 현대 프로그래밍 언어이다kotlin은 처음에 '더 나은 자바'의 목적으로 처음 개발된 언어이다. 그 후 최근 10년간, 코틀린은 단순 JVM을 훨씬 뛰어넘어 cross-platform 솔

복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법이 정의만 봤을 때는, 앞서 다뤘던 분할 정복(divide and conquer)와 매우 유사하다고 느낄 수 있다. 두 알고리즘 모두 큰 문제를 작은

'큰 문제'를 '작은 문제'로 나누어서 해결하는 알고리즘조금 더 풀어 말하자면, 하나의 큰 문제를 작은 부분의 문제들로 나누고, 나눈 부분 문제를 해결하고 해결된 해들을 모아 원래의 문제를 해결해 나가는 방식이다. 따라서 크게 '분할 > 정복 > 결합'의 단계를 지닌다

현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알고리즘위의 트리구조를 봤을 때, 그리디 알고리즘의 경우는 그 단계단계마다 무조건 제일 큰 쪽, 즉 최선의 선택지를 선택하는 것을 확인할 수 있다. 핵심 이론은 다음과 같다.Sol

최소 신장 트리(Minimum Spanning Tree) > MST, 최소 신장 트리란 그래프에서 모든 노드를 연결할 때 사용된 에지들의 가중치의 합을 최소로 하는 트리이다. MST를 구현하는 대표적인 방식 두 가지는 '크루스칼'과 '프림'이 있다. MST는 다음

1. DFS(깊이 우선 탐색) 2. BFS(너비 우선 탐색) 3. Binary Search(이진 탐색)

'그래프는 Node와 edge로 구성된 집합이다'Node: 데이터를 표현하는 단위Edge: Node를 연결가중치(Weight): 에지에 부여된 숫자값Tree 또한 그래프의 일종Union-Find: 노드들이 같은 그룹에 속해 있는지 확인할 때 사용, 싸이클 유무 판단위상

Huffman Encoding이란? Greedy algorithm의 대표적인 예시 *Greedy Algorithm: 매 순간 가장 이득이 되는 선택을 하는 알고리즘 문자들의 '빈도수'를 기반으로, 자주 나오는 문자는 짧은 코드, 길게 나오는 문자는 긴 코드를 부

의존성 주입(Dependency Injection): 컴포넌트 스캔앞서 개발했던 회원관리 서비스 개발에서, 회원 Controller가 회원 service와 회원 repository를 이용할 수 있도록 의존관계를 설정하려고 한다. 여기서 의존관계란, 한 객체가 다른 객체

비즈니스 요구사항 정리이번 스터디는 간단한 회원 관리 시스템을 개발해본다. 본격적인 개발을 시작하기 전에, 비즈니스 요구사항 및 웹 애플리케이션 구조와 클래스 의존관계에 대해 정의를 먼저 한다.데이터: 회원ID, 이름기능: 회원 등록, 조회데이터 저장소(DB)는 아직

정적 컨텐츠서버에서의 특별한 작업 없이 바로 클라이언트에 전달되는 파일들을 의미한다. HTML, CSS, Javascript, 이미지 파일과 같은 리소스들이 이에 해당된다. 스프링 부트는 정적 컨텐츠 기능을 자동으로 제공한다. 웹 브라우저에서 localhost8080/

Recursion의 정의재귀란, 문제를 더 작은 문제들로 나누어 해결해가는 문제 해결 과정이다. 문제를 해결하기 위해 자기 자신을 호출하는 방식으로 문제를 풀어나간다. 다른 말로 '자기 호출'이라고 표현하기도 한다. 이는 수학적 귀납법과도 밀접한 연관이 있다. 1부터

객체지향 설계의 세 가지 관점개념 관점(conceptual Perspective): 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현한다. 명세 관점(Specification Perspective):'사용자'의 영역인 도메인을 벗어나 '개발자'의 영역인 소프트웨어

스프링 프로젝트 생성'https://start.spring.io/' 접속해서 스프링 프로젝트 생성해보기프로젝트 선택: 최근에는 실무에서 거의 Gradle project만 사용Dependencies 선택: 어떤 라이브러리를 끌어다 쓸 것 인지를 선택Intelli

큐(Queue)란,영어 단어 'queue'는 마트에서 계산을 위해 줄을 서거나 번호표를 뽑고 줄서서 기다릴 때와 같이 이러한 '줄'을 의미하는 단어다. 자료구조에 이 큐를 접목시키면, 스택과 정반대로 가장 먼저 들어온 것이 가장 먼저 나가는, FIFO(Fisrt-in,