728x90
1. 입출력
- readLine() 함수 사용
fun main(args: Array<String>) {
val str = readLine()!!
println(str)
}
입력에 readLine() 함수를 이용한다. 변수가 null 값도 가능하게 하려면 !!를 붙인다.
val input = readLine()!!.split(' ')
val str = input[0]
val n = input[1].toInt()
입력값을 띄어쓰기를 기준으로 문자열을 나눠서 배열에 저장하는 방식이다.
- Scanner 사용
import java.util.Scanner
fun main(args: Array<String>) {
val sc: Scanner = Scanner(System.`in`)
val str = sc.nextLine()
println(str)
}
nextLine() 함수는 개행 문자까지의 문자열을 입력받는다. next()는 띄어쓰기까지의 문자열을 입력받는다. 그 외에도 nextInt(), nextLong(), nextFloat() 등의 함수로 다양한 타입으로 입력받기가 가능하다.
- BufferedReader / BufferedWriter 사용
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main(args: Array<String>) {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.`out`))
val str = br.readLine()
bw.write(str)
bw.flush()
}
자바와 사용법은 거의 비슷하다. 빠른 입출력이 가능하다.
2. 반복문
- for문 사용법
for (i in 1..n) { //1, 2, 3, ..., n-1, n
print(str)
}
for (i in 1 until n) { //1, 2, 3, ..., n-1
print(str)
}
for (i in n downTo 1) { //n, n-1, ..., 3, 2, 1
print(str)
}
for (i in 1..n step(2)) { //1, 3, 5, ..., n-2, n
print(str)
}
첫 번째 for문은 1~n까지 반복한다.
두 번째 for문은 1~n-1까지 반복한다. until은 마지막 숫자 전까지 반복한다.
세 번째 for문은 n~1까지 위에서 아래로 반복한다.
네 번째 for문은 1~n까지 2씩 증가하며 반복한다. step() 을 이용해 증가값을 변경할 수 있다.
- while문 사용법
var a = 1
while (a < 10) { //1, 2, 3, ..., 8, 9
print(a++)
}
3. 리스트
- 생성
var list1 = mutableListOf<Int>() //Int형 리스트 생성, 값 없음
var list2 = mutableListOf("A", "B", "C") //String형 리스트 생성, 값에 따라 타입 정해짐
var list3 = listOfNotNull(1, 2, null, 3, 4) //리스트의 null 값을 제외하고 생성
- 순회
for (i in 0 until list3.size) {
print("${list3[i]} ")
}
list2.forEach { i ->
print(i)
}
for문을 사용하여 인덱스로 접근할 수 있다. 이때 반복 횟수에 주의한다.
forEach문을 사용하여 리스트 내의 데이터 자체를 순회할 수 있다.
- 정렬
jusicList.sortBy { it.seq } //seq 기준 오름차순 정렬
jusicList.sortByDescending { it.seq } //seq 기준 내림차순 정렬
//다중 정렬 (ratingAmount 기준 내림차순 정렬, seq 기준 오름차순 정렬)
jusicList.sortWith(compareByDescending<Jusic> { it.ratingAmount }.thenBy { it.seq })
728x90