본문 바로가기
스터디(beakjoon)

Kotlin] 백준 11382번 문제 풀이

by 김마리님 2023. 4. 4.

https://www.acmicpc.net/problem/11382

 

11382번: 꼬마 정민

첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.

www.acmicpc.net

 

풀이

더보기

이번 문제의 쟁점은, 숫자가 10^12까지 올라간다는 것이다. 즉, Int형은 8자리밖에 못 쓰니 Int로 쓰면 NumberFormatException이 일어나게 된다. 따라서, 16자리까지 생기는 Double로 받아야 한다.

근데 여기서 문젠 Double로 출력하게 되면 1234.0 처럼 뒤에 소수점이 붙게 된다. 이것을 다시 포맷팅 해야한다.

이걸 이용하는게 String.format("%.0f", 숫자)를 이용해서 소수점을 떼버린다.

("%.nf" 를 이용해서 소숫점 n의 자리 수를 출력한다.)

 

또한, 공백을 통해 한 줄로 코드를 받아야 하기 때문에 next()가 아니라 nextLine()을 이용해서 공백을 포함하여 한 줄을 그대로 변수로 가져오게 해야한다(next를 쓰면 공백도 다음으로 이해한다.)

이를 공백으로 split해서 배열을 회전하면서 값을 더한다.

 

import java.util.*

fun main(args: Array<String>) {
    question11382()
}

fun question11382() {
    val sc: Scanner = Scanner(System.`in`)
    var scArrayString = sc.nextLine()

    var aArray = scArrayString.split(" ")
    var answer = 0.0

    aArray.forEach {
        answer += it.toDouble()
    }

    println(String.format("%.0f", answer))

}
반응형