Kotlin - PS
코틀린을 이용해 알고리즘 문제 풀이할 때 유용한 팁 정리
Kotlin - PS
입출력
기본 readln()
함수보다 성능이 좋은 bufferedReader
를 사용하는 것이 좋습니다.
1
var br = System.`ìn`.bufferedReader()
숫자 이중 배열 입력 받기
1
val intArr:Array<IntArray> = Array<IntArray>(n) { br.readLine().split(" ").map { it.toInt() }.toIntArray() }
자료구조
array
코틀린에서 배열은 다음과 같이 선언 가능합니다.
1
2
3
// 크기 N짜리 배열이 생성되고, 람다 표현식이 실행되어 배열을 초기화합니다.
val arr:Array<String> = Array(N) {br.readLine()}
val arr2:Array<String> = arrayOf("1234","5678")
기본 타입 배열은 다음과 같이 생성 가능합니다.
1
2
3
4
// 1, 2, 3
val intArr:IntArray = intArrayOf(1, 2, 3)
// 0, 1, 2, 3, ~~ N-1
val intArr2:IntArray = IntArray(N) {i}
map & list
코틀린에서 map과 list는 기본적으로 읽기 전용으로 생성되기에, MutableMap
그리고 MutableList
로 선언해야합니다.
1
2
3
4
5
val map:MutableMap<Int, Int> = mutableMapOf<Int, Int>()
val map = mutableMapOf(1 to 2, 2 to 3)
val list:MutableList<Int> = mutableListOf()
val list = mutableListOf<Int>(1,2,3)
정렬
코틀린에서는 다양한 메소드를 사용하여 정렬할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var arr = arrayOf(0, 7, 4, 3, 2, 6, 5, 1)
var arr2 = arrayOf()
var list = listOf()
arr.sort() // 오름차순으로 정렬
arr.sortDescending() // 내림차순으로 정렬
arr2 = arr.sortedArray() // 오름차순으로 정렬된 새로운 배열을 반환
arr2 = arr.sortedArrayDescending() // 내림차순으로 정렬된 새로운 배열을 반환
list = arr.sorted() // 오름차순으로 정렬된 리스트를 반환
list = arr.sortedDescending() // 내림차순으로 정렬된 리스트를 반환
----
// 데이터 클래스 정렬
data class Person(var name : String, var age : Int)
var arr = arrayOf(Person("Park", 10), Person("Kim", 12), Person("Choi", 5), Person("Lee", 19))
arr.sortBy {it.name.length} // 이름 길이를 기준으로 오름차순 정렬
arr.sortByDescending {it.age} // 나이 기준으로 내림차순 정렬
arr.sortWith(
kotlin.Comparator {o1, o2 ->
o1.age - o2.age
}
) // sortWith() 안에 comparator를 선언해서 정렬할 수 있습니다, 나이를 기준으로 오름차순 정렬
arr.sortWith(compareBy({it.name}, {it.age})) // compareBy를 comparator 대신 삽입 가능합니다, 이름 기준 오름 차순 -> 나이 기준 오름 차
etc
character -> int
1
2
3
val str = "1234"
str[0].toInt() // 1의 아스키 코드값을 리턴
Character.getNumericValue(str[0]) // 1이라는 수를 리턴
substring
자바와 같이 [0:2]
로 자를 수 없고 다음과 같은 메소드를 사용해야합니다.
1
2
3
4
str.substring(0 until 5)
str.substring(5)
str.substring(5,9)
This post is licensed under CC BY 4.0 by the author.