본문 바로가기
카테고리 없음

코틀린 공부

by 댈팽이 2024. 7. 4.
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