안녕하세요! 오늘은 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을 사용했습니다.
긴 글 읽어주셔서 감사합니다!
'백준 - 단계별로 풀어보기 > C#' 카테고리의 다른 글
| [백준] 10926번 ??! 풀이 (C#) - Elif's Diary (0) | 2026.03.03 |
|---|---|
| [백준] 10869번 사칙연산 풀이 (C#) - Elif's Diary (0) | 2026.03.02 |
| [백준] 10998번 A×B 풀이 (C#) - Elif's Diary (0) | 2026.03.02 |
| [백준] 1001번 A-B 풀이 (C#) - Elif's Diary (0) | 2026.03.02 |
| [백준] 1000번 A+B 풀이 (C#) - Elif's Diary (0) | 2026.03.01 |