Living in my own world. Else If..? 자세히보기

백준 - 단계별로 풀어보기/C#

[백준] 1008번 A/B 풀이 (C#) - Elif's Diary

Elif_918 2026. 3. 2. 19:05

안녕하세요! 오늘은 1008번을 풀어봤습니다.

// https://www.acmicpc.net/problem/1008
// 시간 제한 : 2초
// 메모리 제한 : 128 MB
// 문제 : 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
// 입력 : 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
// 출력 : 첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하이면 정답이다.

using System;
namespace Baekjoon {
    class Baekjoon1008 {
        static void Main(string []args) {
            string n = Console.ReadLine();
            string[] num = n.Split();
            Console.WriteLine(double.Parse(num[0]) / double.Parse(num[1]));
            // 구조는 1000, 1001, 10998번과 동일하지만,10^-9 이하의 오차로 나타내야 하기 때문에
            // int 대신 double로 사용.
        }
    }
}
// 백준 단계별로 풀어보기 1. 입출력과 사칙연산 - 5단계 1008번 A/B
// https://www.acmicpc.net/problem/1008

1008번 문제는 2026년 3월 2일 기준 정답률 34.63%로, 처음 풀때는 대부분 최소 한번은 틀리는 문제입니다. 

1008번은 전에 풀었던 1000,1001,10998번 문제와 다르게 단순히 연산자만 바꾸어서 제출 시 틀린 답이라고 표시되거든요.
그 이유는 자료형에 있습니다.

전 문제들은 모두 정수형(int)로 계산했지만, 이번엔 double,float같은 실수형 자료형으로 바꿔서 계산해야하기 때문입니다.

문제를 잘 읽어보시면, 정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하면 정답으로 처리된다고 명시되어 있습니다.
저희가 사용하던 int는 부호를 포함한 4바이트(32비트)의 정수를 저장하는 자료형으로, -2,147,483,648 부터 2,147,483,647까지의

정수를 저장 가능합니다.

하지만 이번 문제에서는 / 연산자, 즉 나눗셈을 사용합니다.
수학 문제로 이해하면 쉽습니다. 1 나누기 3을 하면 0.333333....으로 안 나눠 떨어지죠?
만약 1/3을 int 자료형을 써서 계산하면 소수점은 버림해 0이라고 출력됩니다.
조건에 A/B를 10^-9 이하의 오차로 출력하라는 항목이 있었기 때문에 이 경우 오답으로 처리됩니다.
만약 실수형을 쓴다면 0.33333....을 전부 출력해 정답처리가 되죠.

p.s float 사용 시 변수명 뒤 f를 붙여야 하기 때문에 저는 그냥 double을 사용했습니다.

긴 글 읽어주셔서 감사합니다!