문제 : A/B(1008번)(Bronze V)
문제 링크 : https://www.acmicpc.net/problem/1008
출처 : Baekjoon Online Judge
이 문제는 A 나누기 B 연산을 하면 됩니다.
C++에서는 다음과 같이 double로 변환해서 해결할 수 있습니다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
double a, b;
cin >> a >> b;
cout << a / b << '\n';
return 0;
}
자, 과연 AC 받을 수 있을까요???

오잉? 오답이라고 하네요? 어째서일까요?
C++에서는 기본적으로 정수 나누기 정수로 하면 소수점 6자리까지만 계산합니다.
a = 1, b = 7인 경우 0.142857까지만 출력합니다.
그리고 이로 인해 아래의 반례가 발생합니다.
input
1 11
output
0.0909091
answer
0.0909090909
"실제 정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하이면 정답이다"
라는 조건에 의해 답은 0.090909090 혹은 0.090909091로 해도 정답으로 인정 받습니다.
자, 그러면 이 문제를 어떻게 해결해야 할까요?
a, b는 정수형 변수로 가정하고 a = 15, b = 7이라고 가정합니다.
우선 정수 부분을 구해야 합니다.
정수 부분은 a / b로 쉽게 구할 수 있습니다.
즉, 15 / 7 = 2가 됩니다.
그리고 나머지 15 % 7 = 1로 구합니다.
이러면 15 나누기 7의 값은 2.xxxxxxxxx가 됩니다.
그러면 소수 부분을 어떻게 구해야 할까요?
아래의 사진을 확인해주세요.

제가 직접 공책에 필기한 계산 과정입니다.
우선 정수 부분을 구하기 위해 몫 연산을 한 뒤 나머지 연산을 합니다.
그리고 그 몫 부분을 cout으로 출력한 다음 "."을 추가로 cout으로 출력합니다.
그 뒤 나머지 * 10 하고 몫 연산/나머지 연산을 하는 식으로 해서 각 몫 부분들을 하나씩 출력합니다.
그러면 15 / 7 = 2.142857142857...이 나오게 됩니다.
그러므로 C++ 소스 코드는 아래와 같이 작성할 수 있습니다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int a, b;
cin >> a >> b;
cout << a / b << ".";
a %= b;
for(int i = 1; i <= 9; i++) {
a *= 10;
cout << a / b;
a %= b;
}
return 0;
}
이제 제출해볼까요?

멋진 AC 판정을 받았습니다!
그 다음으로 Python으로 어떻게 하면 되는지 알려드립니다.
Python은 정말로 간단합니다.
1001번 문제에서 -를 /로 바꾸기만 하면 됩니다.
import sys
input = sys.stdin.readline
A, B = map(int, input().split())
print(A / B)
참 쉽죠?
'(구) solved ac class 문제들 > class 1' 카테고리의 다른 글
| [class 1]백준 검증수(2475번) (C++/Python) (0) | 2026.02.05 |
|---|---|
| [class 1]백준 별 찍기 - 1(2438번) (C++/Python) (0) | 2026.02.04 |
| [class 1]백준 두 수 비교하기(1330번) (C++/Python) (0) | 2026.02.03 |
| [class 1]백준 A-B(1001번) 풀이 (C++/Python) (0) | 2026.01.28 |
| [class 1]백준 A+B(1000번) 풀이 (C++/Python) (0) | 2026.01.28 |