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

Kotlin] 백준 1008번 문제 풀이

by 김마리님 2023. 3. 9.

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

 

1008번: A/B

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

풀이

더보기

이번 문제의 핵심은 10^-9까지 출력해야한다는 점이다.

선택해야하는 자료형과 출력방식을 유의해야한다.

소수점을 표현하는 방식으로 float와 double을 많이 쓰게 되는데, float는 7자리 수, double은 16자리 수까지 표현한다.

따라서, 1/3을 할 경우 float는 0.3333334로 출력되지만, double은 0.3333333333333.. 으로 출력된다.

이번 문제를 보면,

 

라는 조건이 있다. 실제로 float를 10자리까지 늘려보면 0.3333334333로 출력되므로, 10^-7에서 오차가 발생한다. 즉, 문제의 취지에 옳지 않다. 따라서 double 자료형을 사용한다.

또한 문제의 조건에서 10자리까지 출력하라 했으므로 나눈 값을 String.format을 이용하여 변경현다.

 

import java.util.*

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

fun question1008() {
    val sc: Scanner = Scanner(System.`in`)
    var a = sc.nextDouble()
    var b = sc.nextDouble()

    println(String.format("%.10f", (a/b)))

}

 

반응형