IT Study/백준 알고리즘
[백준 알고리즘/Kotlin] 10869번 사칙연산 (feat. 입출력, append 체이닝)
three kim
2023. 12. 26. 15:32
728x90
Kotlin 기초부터 탄탄히 가보죠.
1. 백준 알고리즘 풀이 시, 입출력의 기본 형태
1-1. 기본 형태 (simple)
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.IOException
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val result = StringBuilder()
println(result)
br.close()
}
1-2. 예외 처리한 형태
안전한 코딩을 연습하기 위해서는 예외 처리를 습관화하는 것이 좋겠습니다.
(예외가 발생활 확률이 매우 낮을 때는 사용하지 않는 것도 좋을 것 같네요. 필요할 때를 잘 구분해서 사용해야겠습니다.)
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.IOException
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val result = StringBuilder()
try {
// br.readLine()을 사용하여 한 줄을 읽고 이를 StringBuilder에 추가
} catch (e: IOException) {
e.printStackTrace()
} finally {
br.close()
}
println(result)
}
try {
// 예외가 발생할 수 있는 코드 작성
} catch (e: ExceptionType) {
// 예외가 발생했을 때 수행할 코드 작성
} finally {
// 항상 실행되어야 하는 코드 작성 (예외 발생 여부와 상관없이)
}
1-3. use 함수 사용 (자동으로 BufferedReader 닫히도록 만들기)
fun main() = System.`in`.bufferedReader().use { br ->
val result = StringBuilder()
// br.readLine()을 사용하여 한 줄을 읽고 이를 StringBuilder에 추가
print(result)
}
2. StringBuilder()의 append 체이닝
코드 스타일에 따라 2가지 방법을 사용할 수 있습니다.
2-1. apply 함수 활용
val result1 = StringBuilder()
result1.apply {
append("Hello, ")
append("Kotlin!")
}
println(result1.toString())
위 코드에서 apply 함수는 StringBuilder의 인스턴스에 연이어 작업을 수행하도록 해줍니다
여러 줄에 걸쳐 코드를 작성할 수 있어 가독성이 좋습니다.
2-2. 직접 append 체이닝
val result2 = StringBuilder()
result2.append("Hello, ").append("Kotlin!")
println(result2.toString())
이 코드에서는 StringBuilder에 직접 append 메서드를 체이닝 하여 작업을 수행합니다.
코드가 간결하며 한 줄에 작성할 수 있습니다.
3. 최종 결과 코드
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.IOException
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val result = StringBuilder()
try {
val (a, b) = br.readLine().split(" ").map { it.toInt() }
val sum = a + b
val sub = a - b
val mul = a * b
val div = a / b
val rem = a % b
result.apply {
append("$sum\n")
append("$sub\n")
append("$mul\n")
append("$div\n")
append("$rem")
}
} catch (e: IOException) {
e.printStackTrace()
} finally {
br.close()
}
print(result)
}