[프로그래머스/Kotlin]Level3 - 양과 늑대
·
프로그래밍 언어/Kotlin 기초
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 문제 설명 2진 트리 모양 초원의 각 노드에 늑대와 양이 한 마리씩 놓여 있습니다. 이 초원의 루트 노드에서 출발하여 각 노드를 돌아다니며 양을 모으려 합니다. 각 노드를 방문할 때 마다 해당 노드에 있던 양과 늑대가 당신을 따라오게 됩니다. 이때, 늑대는 양을 잡아먹을 기회를 노리고 있으며, 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양이 늑대에게 잡아먹히지 않도록 하면서 최대한 많은 수의 양을 모아서 다시 루트 노드로 돌아오려 합니다. ..
[Kotlin]Typealias VS Inline Class
·
프로그래밍 언어/Kotlin 기초
1. typealias 변수들에 대한 새로운 별명을 지어주고, 짧게 사용 가능 typealias를 클래스 혹은 함수 내에서 정의하는 것은 불가능하다 typealias는 누구나 접근할 수 있는 Top Level 변수이다 동일한 type을 여러 개의 이름*으로 사용할 수 있다. ex1-1. typealias NodeSet = Set ex1-2. typealias FileTable = MutableMap ex2-1. typealias MyHandler = (Int, String, Any) > Uit ex2-3. typealias Predicate = (T) -> Boolean PermissionDialog 클래스를 PermissionDialogCallback으로 정의 (PermissionDialog) -> U..
[Kotlin]Deligation
·
프로그래밍 언어/Kotlin 기초
Deligation Pattern 참고링크 Deligation Pattern(위임 패턴)이란, 객체가 상송과 동일하게 코드 재사용을 할 수 있도록하는 객체지향 디자인 패턴이다. 예제소스 (kotlin) class Rectangle (val width: Int, val height: Int) { fun area() = width * height } class Window (val bounds: Rectangle) { // Deligation fun aread() = bounds.area() } 코틀린에서는 Deligation에 대한 특별한 기능이 내장되어 있어 다음과 같이 작성할 수 있다. interface ClosedShape { fun area() : Int } class Rectangle (val w..
[Kotlin]tailrec(꼬리재귀)
·
프로그래밍 언어/Kotlin 기초
tailrec이란? tailrec은 꼬리재귀(tail recursive)라는 의미로, 추가적인 연산이 없이 자신 스스로 재귀적으로 호출하다가 어떤 값을 리턴하는 함수를 의미 자신만 반복적으로 호출하는 재귀함수(tailrec)는 while과 같이 루프를 사용하는 코드로 변환이 가능함. 재귀함수가 호출되면서 소비되는 스택을 아낄 수 있음 (스택이 각 중간 재귀 상태를 추적할 필요가 없음) 루프는 동일한 결과를 출력하면서 재귀함수보다 더 적은 자원을 사용 재귀함수와 꼬리재귀 팩토리얼을 재귀함수로 구현해보자! fun factorial(n: Int): Int { return when (n) { 1 -> n else -> n * factorial(n-1) // 재귀 호출 } } 재귀함수를 꼬리재귀로 작성해보자! t..
[Kotlin공부]코틀린문법정리 : 07 설계도구
·
프로그래밍 언어/Kotlin 기초
7.1 설계도구 객체지향 프로그래밍은 구현과 설계로 구분함 ⊙ 패키지 클래스와 소스 파일을 관리하기 위한 디렉터리 구조의 저장 공간 디렉터리가 계층 구조로 만들어져 있으면 온점(.)으로 구분해서 각 디렉터리를 모두 나열해줌 package 메인 디렉터리.서브 디렉터리 class 클래스 { } ⊙ 추상화 메서드 이름으로 나열했을 때, 명확한 코드는 설계 단계에서 메서드 블록 안에 직접 코드를 작성 명확하지 않은 경우는 구현 단계에서 코드를 작성하도록 메서드의 이름만 작성 => 추상화(abstract) Activity가 상속받는 클래스 중 최상위 클래스 : Context => abstract로 설계되어 있음 abstract class Animal { fun walk() { println("걷습니다.") } a..
[Kotlin공부]코틀린문법정리 : 06 클래스
·
프로그래밍 언어/Kotlin 기초
6.1 클래스와 설계 그룹화할 수 있는 함수와 변수를 한군데 모아놓고 사용하기 쉽게 이름을 붙여놓은 것 class 클래스명 { var 변수 fun 함수() { // 코드 } } class Log { var status: Intcompanion objext { static fun d(tag: String, msg: String) { // 문자열을 출력하는 코드 } static fun e(tag: String, msg: String) { // 문자열을 출력하는 코드 } } } 6.2 클래스의 생성 함수 형태로 제공되는 생성자를 호출해야지만 클래스 실행 class Kotlin { init { // 생성자가 없으면 아무것도 없는 init 블록이 실행되는 것과 같음 } } ⊙ 프라이머리 생성자 class Kotl..
[Kotlin공부]코틀린문법정리 : 05 함수
·
프로그래밍 언어/Kotlin 기초
5.1 함수의 정의 함수는 fun 키워드로 정의, 값을 입력받아 사용 입력될 값을 기술한 것을 파라미터(Parameter)라 부름 fun 함수명(파라미터 이름 : 타입): 반환타입 { return 값 } ⊙ 반환값과 입력값이 있는 함수의 정의 fun square(x: Int): Int { return x * x } ⊙ 반환값과 입력값이 있는 함수의 정의 fun printSum(x:Int, y:Int) { println("x+y=${x+y}") } ⊙ 입력값 없이 반환값만 있는 함수의 정의 fun getPi(): Double { return 3.14 } 5.2 함수의 사용 함수의 사용은 이름 뒤에 괄호를 붙여 명령어를 실행하는 형태 => 함수명(값) fun 함수명(파라미터 이름 : 타입): 반환타입 { r..
[Kotlin공부]코틀린문법정리 : 04 반복문
·
프로그래밍 언어/Kotlin 기초
4.1 for 반복문 for : 특정 횟수만큼 코드를 반복하기 위해 사용 ⊙ for 다음의 괄호 () 안에 반복할 범위를 지정하면 for 블로의 코드들이 지정한 횟수만큼 반복해서 동작 for (반복할 범위) { // 실행 코드 } ⊙ for in ..(온점 2개) : 일반적인 형태의 for 반복문 시작값과 종료값으로 지정한 숫자 범위만큼 코드를 반복하는 일반적인 방법 for (변수 in 시작값..종료값) { // 실행 코드 } for (index in 1..10) { println("현재 숫자는 " + index) } *** 출력 결과 *** 현재 숫자는 1 현재 숫자는 2 현재 숫자는 3 현재 숫자는 4 현재 숫자는 5 현재 숫자는 6 현재 숫자는 7 현재 숫자는 8 현재 숫자는 9 현재 숫자는 10 ..
[Kotlin공부]코틀린문법정리 : 03 배열과 컬렉션
·
프로그래밍 언어/Kotlin 기초
3.1 배열 여러 개의 값을 담을 수 있는 대표적인 자료형 값을 담기 전에 먼저 배열 공간의 개수를 할당하거나 초기화 시에 데이터를 저장해두면 데이터의 개수만큼 배열의 크기가 결정됨 먼저 개수를 정해놓고 사용해야 하며 중간에 개수를 추가하거나 제거할 수 없음 선언형태 var 변수 = Array(개수) var students = IntArray(10) var longArray = LongArray(10) var CharArray = CharArray(10) var FloatArray = FloatArray(10) var DoubleArray = DoubleArray(10) 문자 배열에 빈 공간 할당하기 String은 기본 타입이 아니기 때문에 StringArray는 없지만 아래와 같이 사용 가능 var s..
[Kotlin공부]코틀린 문법 정리 : 02 조건문
·
프로그래밍 언어/Kotlin 기초
2.1 조건문 if var myNumbers = "1,2,3,4,5,6" var thisWeekNumbers = "5,6,7,8,9,10" if (myNumbers == thisWeekNumbers) println("Lotto" + " 당첨되었습니다.") else println("당첨 X") if문을 사용하기 위한 조건 1. 비교 연산자 : ==, 2. 논리 연산자 : &&, || -> 조건식 결과는 Boolean 타입인 true와 false로 나타남 var a = 30 var b = 19 var bigger = a > b println("비교 연산자 a는 b보다 큽니다.: $bigger") // $뒤에 변수명 넣으면 출력됨 // println("비교 연산자 a는 b보다 큽니다.: " + bigger) ..
[Kotlin공부]코틀린 문법 정리 : 01 변수 선언하기
·
프로그래밍 언어/Kotlin 기초
fun main(변수명: 타입) public int solution(String s) fun solution(s: String) 코틀린 변수 (val, var) val name = “hong” ☞ 불변변수 var subject: String = “music” ☞ 가변변수 // 초기화 val grade: Int grade = 1
뿌꾸 빵
'프로그래밍 언어/Kotlin 기초' 카테고리의 글 목록