분류 전체보기 59

Do it! 코틀린 프로그래밍, 03-1 함수 선언하고 호출하기

함수란 무엇인가? 함수는 여러 값을 입력받아 기능을 수행하고 결과를 반환하는 코드의 모음. 함수 구조 살펴보기 fun 함수이름([매개변수이름: 자료형, ...]): [반환값자료형] { 함수의 본문(표현식) [return 반환값] } fun sum(a: Int, b: Int): Int { return a + b } fun sum(a: Int, b: Int): Int = a + b fun sum(a: Int, b: Int) = a + b 인자와 매개변수 함수를 선언할 때는 매개변수. 함수를 호출할 때는 인자. 반환값이 없는 함수 함수의 반환값은 생략할 수 있다. 즉, return 문을 생략할 수 있다. fun demo(): Unit {} fun demo2() {} 코틀린은 함수에서 반환값과 반환값의 자료형이..

코틀린 2021.08.23

Do it! 코틀린 프로그래밍, 08-2 배열 다루기

코틀린에서 배열은 Array 클래스로 표현된다. 배열을 사용하는 방법 전통적인 배열은 동일한 자료형의 데이터를 연속적으로 나열한 형태를 말한다. 기본적으로 배열은 1차원적으로 순서 번호에 해당하는 인덱스와 값이 들어있는 자료형에 따른 요소의 저장 공간을 가지고 있다. 배열을 생성하기 위해서는 arrayOf() 또는 Array() 생성자를 사용해 배열을 만든다. 빈 상태의 배열을 지정하는 경우 arrayOfNulls()를 사용한다. val numbers = arrayOf(4, 5, 6, 3) val animals = arrayOf("Cat", "Dog", "Lion") for (e in numbers) { println(e) } val mixArr = arrayOf(4, 5, 1, "Goal", false..

코틀린 2021.08.22

Do it! 코틀린 프로그래밍, 08-1 제네릭 다루기

Generic은 클래스 내부에서 사용할 자료형을 나중에 인스턴스를 생성할 때 확정한다. 자료형의 객체들을 다루는 메서드나 클래스에서 컴파일 시간에 자료형을 검사해 적당한 자료형을 선택할수 있도록 한다. 제네릭의 일반적인 사용 방법 제네릭은 앵글 브래킷() 사이에 형식 매개변수를 넣어 선언하며 이때 형식 매개변수는 하나 이상 지정할 수 있다. 형식 매개변수는 자료형을 대표하는 용어로 T와 같은 특정 영문의 대문자로 사용하며 나중에 필요한 자료형으로 대체된다. 제네릭은 다양한 자료형을 다뤄야 하는 컬렉션에 많이 사용되고 있다. class Demo(t: T){ var name = t } fun main() { val d = Demo(1) val d2 = Demo("yopi") println(d.name) pr..

코틀린 2021.08.02

Do it! 코틀린 프로그래밍, 07-2 데이터 클래스와 기타 클래스

보통 클래스는 속성과 동작을 가지기 때문에 프로퍼티와 메서드를 멤버로 가진다. 하지만 오로지 데이터 저장을 위해서 사용한다면 일반적인 클래스가 가지는 구현부가 필요 없을 수도 있다. 오히려 구현부 때문에 메모리를 더 사용할 수도 있다. 오로지 데이터 저장에 초점을 맞추기 위해 코틀린에서는 데이터(Data) 클래스라는 특별한 클래스를 제공한다. 그 외에도 실드(Sealed), 이너(Inner), 열거형(Enum) 클래스 등을 사용할 수 있다. 데이터 전달을 위한 데이터 클래스 데이터 전달을 위한 객체를 DTO(Data Transfer Object)라고 부른다. 자바에서는 POJO(Plain Old Java Object)라고 부르기도 함. DTO는 순수한 데이터 객체를 표현하기 때문에 보통 속성과 Gette..

코틀린 2021.08.01

Do it! 코틀린 프로그래밍, 07-1 추상 클래스와 인터페이스

추상 클래스(Abstract Class)는 선언 등의 대략적인 설계 명세와 공통의 기능을 구현한 클래스. 추상이라는 말은 구체적이지 않은 것을 나타냄. 추상 클래스를 살속하는 하위 클래스에서 추상 클래스의 내용을 더 구체화해야함. 인터페이스(interface)도 대략적인 설계 명세를 가지고 몇 가지 기본적인 부분은 구현할 수 있지만, 하위에서 더 자세히 구현해야 하는 점은 추상 클래스와 동일. 하지만, 인터페이스에서는 프로퍼티에 상태 정보를 저장할 수 없음. 단, 다중 상속과 같이 여러 개의 인터페이스를 하나의 클래스에서 구현하는 것이 가능. 추상 클래스 abstract라는 키워드와 함께 선언하며 일반적인 객체를 생성하는 방법으로는 인스턴스화 할 수 없다. 추상 클래스를 상속하는 하위 클래스를 어떻게 만..

코틀린 2021.07.21

프로그래밍(Programming)이란?

프로그래밍(Programming)이란? 컴퓨터 명령의 집합을 만드는 것. 프로그램(Program)이란? 계획 진행 순서 절차 컴퓨터(Computer)란? 아래의 장치들을 묶어서 컴퓨터라고 한다. 중앙처리장치(CPU) 산술/논리 연산 흐름 제어 (반복 처리) 주기억장치(Memory) 임시 저장소 다양한 입/출력 장치 영구 저장소 (하드 디스크) 기본 입력 장치 (콘솔) 키보드 마우스 기본 출력 장치 모니터 컴퓨터 프로그램(Computer Program)이란? 컴퓨터를 이용한 절차를 만들어 놓은 것. 컴퓨터 명령의 집합.

개념 정리 2021.07.19

Do it! 코틀린 프로그래밍 - 06 프로퍼티와 초기화

자바에서는 getter와 setter의 역할을 하는 메서드를 직접 만들어야 한다. 하지만, 코틀린에서는 프로퍼티의 getter와 setter를 자동으로 만든다. 코틀린에서 프로퍼티는 반드시 초기화돼야 하는데 초기화를 나중에 할 수 있도록 lateinit, lazy를 사용할 수 있다. 06-1 프로퍼티의 접근 클래스 내에 선안한 변수를 '프로퍼티'라고 한다. 자바에서는 이런 변수를 '필드'라고 한다. 코틀린에서는 변수의 선언 부분과 기본적인 접근 메서드를 모두 가지고 있기 때문에 프로퍼티라는 새로운 이름으로 부른다. 자바에서는 private 필드에 직접 접근할 수 없고 setter나 getter를 통한 접근만 허용한다. 필드가 점점 늘어나면 접근 메서드도 함께 많아지게 된다. (최대 단점) 코틀린에서는 객..

코틀린 2021.07.13

Do it! 코틀린 프로그래밍 - 05 클래스와 객체

OOP: Object-Oriented Programming 프로그램의 구조를 객체 간 상호작용으로서 표현하는 프로그램이 방식 절차적 프로그램밍의 한계를 극복하고자 나온 방법론 중 하나 코틀린은 함수형 프로그래밍과 객체 지향 프로그래밍을 지원 추상화(Abstraction): 특정 클래스를 만들 때 기본 형식을 규정하는 방법 인스턴스(Instance): 클래스로부터 생성한 객체 상속(Inheritance): 부모 클래스의 내용을 자식 클래스가 그대로 물려받음 다형성(Polymorphism): 하나의 이름으로 다양한 처리를 제공 캡슐화(Encapsulation): 내용을 숨기고 필요한 부분만 사용 메시지 전송(Message Sending): 객체 간에 주고받는 메시지 연관(Association): 클래스 간의..

코틀린 2021.07.07

정렬 - Counting Sort (계수 정렬)

정렬되지 않은 숫자 배열이 있다. [0, 1, 2, 3, 2, 5, 0, 5, 2, 3] 각 숫자의 개수를 센다. 0은 2개 1은 1개 2는 3개 3은 2개 4는 0개 5는 2개 이걸 배열로 만든다.(이걸 숫자 카운트 배열이라 하겠다) 이때 숫자는 인덱스로 개수는 값으로 한다. [2, 1, 3, 2, 0, 2] 왼쪽에서 오른쪽으로 누적합을 계산한다. (이걸 누적합 배열이라 하겠다) [2, 3, 6, 8, 8, 10] 각각의 값들이 정렬될 배열의 인덱스를 알려준다. (아래에서 다시 설명한다.) 그런데 이상하다! 값들이 인덱스라고 했는데 마지막 값에 10이 있다. 나는 10개의 배열(인덱스 0~9)을 정렬하는데 인덱스 10이 나오다니? 그렇다. 여기서 전체 배열에 -1을 해줘도 되고 아니면 나중에 인덱스를 ..

코딩 테스트 2020.09.10