{ }codelper
실수 나눗셈P0216

1리터로 가는 거리

자동차가 d킬로미터를 달리며 연료 l리터를 썼다. 한 줄에 정수 d와 l이 빈칸 하나로 띄워 주어진다. 연료 1리터로 간 거리, 곧 d ÷ l을 소수점 아래 정확히 두 자리로 출력하라. 몫이 정수여도 두 자리를 쓴다(25 ÷ 5 → 5.00). 입력은 d × 100이 l로 나누어떨어지는 것만 주어진다.
그래서 몫은 소수 둘째 자리 안에서 끝나고, 반올림할 일은 없다.

입력
1 ≤ d ≤ 100,000, 1 ≤ l ≤ 1,000, d × 100은 l로 나누어떨어진다
출력
d ÷ l 한 줄, 소수점 아래 정확히 두 자리
예시 1 · stdin
25 2
stdout
12.50
예시 2 · stdin
3 4
stdout
0.75
main.py
입력(stdin)

실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).

$ 준비됐어요

코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.

다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이

함정은 정수 나눗셈이에요.
C·C++·Java·C#에서 d / l은 int끼리라 몫만 남아요(3 / 4 → 0).
한쪽을 먼저 실수로 바꿔야 해요: C·Java·C# (double)d / l, C++ static_cast<double>(d) / l.
(double)(d / l)처럼 나눈 뒤에 바꾸거나 double km = d / l;처럼 실수 변수에 담기만 하면, 이미 소수가 버려진 뒤라 3 4에서 0.00이 나와요.
Python 3·JS·TS·크레이콘의 /는 정수끼리도 소수까지 나눠요(Python의 //는 몫만이에요).
둘째 함정은 자리 수예요.
그냥 찍으면 Python print(d / l)은 12.5, JS·TS console.log(d / l)은 12.5, 정수 몫이면 JS는 5, Python은 5.0이 나와요.
소수 두 자리는 Python f"{x:.2f}", JS·TS x.toFixed(2), C printf("%.2f"), C++ std::fixed << std::setprecision(2), Java String.format("%.2f", x), C# x.ToString("F2"), 크레이콘 글자.소수자리맞추기(x, 2)로 맞춰요.

Pythonmain.py · 3 줄
d, l = map(int, input().split())# Python 3의 /는 정수끼리도 소수까지 나눈다(//는 몫만)print(f"{d / l:.2f}")
JavaScriptmain.js · 3 줄
const [d, l] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);// toFixed(2)가 소수 두 자리 문자열을 만든다(12.5 → "12.50")console.log((d / l).toFixed(2));
TypeScriptmain.ts · 3 줄
import { readFileSync } from "node:fs";const [d, l]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);console.log((d / l).toFixed(2));
JavaMain.java · 13 줄
import java.util.Locale;import java.util.Scanner; public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int d = sc.nextInt();        int l = sc.nextInt();        // 한쪽을 double로 바꿔야 실수 나눗셈이 된다        double km = (double) d / l;        System.out.println(String.format(Locale.ROOT, "%.2f", km));    }}
C#Main.cs · 15 줄
using System;using System.Globalization; class Program{    static void Main()    {        string[] p = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries);        int d = int.Parse(p[0]);        int l = int.Parse(p[1]);        // int끼리 나누면 몫만 남으니 한쪽을 double로        double km = (double)d / l;        Console.WriteLine(km.ToString("F2", CultureInfo.InvariantCulture));    }}
C++main.cpp · 9 줄
#include <iomanip>#include <iostream> int main() {    int d, l;    std::cin >> d >> l;    double km = static_cast<double>(d) / l;    std::cout << std::fixed << std::setprecision(2) << km << "\n";}
Cmain.c · 10 줄
#include <stdio.h> int main(void) {    int d, l;    scanf("%d %d", &d, &l);    /* int끼리 나누면 소수가 버려진다. (double)로 한쪽을 바꾼다 */    double km = (double)d / l;    printf("%.2f\n", km);    return 0;}
Craykonmain.cray · 5 줄
p = 콘솔.줄읽기().공백제거().나누기(" ");d = p[0].수로변환();l = p[1].수로변환();// 크레이콘의 /는 늘 소수까지 나눈다콘솔.쓰기(글자.소수자리맞추기(d / l, 2));