티스토리 뷰
백준 1008번 문제는 사칙연산 중 나눗셈을 코딩으로 구현하는 문제입니다. 덧셈, 뺄셈, 곱셈과 같은 다른 사칙연산 문제들은 문제 그대로 풀어도 잘 풀렸지만 백준 1008번 문제는 한번 더 생각을 해봐야하는 문제라서 포스팅해보려합니다.
Q.1008 문제
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다. (10의 -9제곱)
이 문제를 보고 고려해야할 점은 두가지입니다. 첫번째는 자료형, 두번째는 소수점자릿수입니다.
1. 자료형
C++에는 자료형이 다양하게 있습니다. 그 중에서 보통 숫자는 정수를 다루는 int를 주로 사용하고 문자는 char를 자주 사용합니다. 1008번 문제는 int로 문제를 풀면 안됩니다. int는 4byte를 차지하는 자료형으로 정수를 다룰때 사용합니다. 이 문제와 같이 소수를 사용하는 문제에서는 실수를 다루는 float, double을 사용해야합니다. 둘 중에서도 이 문제에서는 double이 적합합니다. 그 이유는 float와 double의 차이점에서 알 수 있습니다.
float과 double의 차이점은 차지하는 byte의 수와 정밀도에 있습니다. float는 4byte를 차지하고 6자리 소수점까지이고 double은 8byte를 차지하고 15자리 소수점까지입니다. 위의 문제에서는 실제 정답과 출력값의 절대오차 또는 상대오차가 10의 -9제곱 이하이면 정답이므로 double을 써야합니다.
2. 소수점자릿수
double을 썼는데도 cout을 사용해 출력한다면 소수점 6자리 숫자까지만 나옵니다. 출력 제한이 있기 때문에 소수점이 적어도 9자리까지는 나와야합니다. 그래서 소수점 열번째자리까지 출력하도록 설정하는 cout.precision(10); 를 코드에 추가합니다.
정답
#include <iostream>
using namespace std;
int main(){
double a,b;
cin>>a;
cin>>b;
cout.precision(10);
cout<<a/b<<endl;
}
'코딩테스트' 카테고리의 다른 글
순열과 조합 C++ (1) | 2024.02.13 |
---|---|
[BOJ 1920] std::binary_search()를 set에 사용하면 안되는 이유 (이분탐색이 O(n)이 되어버리는 매직) (2) | 2024.01.18 |
[백준 15651] 완전탐색_브루스포스(Brute Force) (0) | 2023.03.06 |
[백준 출력] \, ', " cout 에러&이스케이프 시퀀스 알아보기 (0) | 2023.02.10 |
[백준 10926] Trigraph ignored 에러 (0) | 2023.02.09 |
- Total
- Today
- Yesterday
- 공룡책
- 혼공학습단
- 혼공단 9기
- C++
- 깃 예제
- 혼공단
- 운영체제
- Linux
- Process
- 혼공
- 혼공단 SQL
- 스페인
- 리눅스
- nodejs
- JS
- 스페인 교환학생
- googleapis
- 교환학생
- 개발 프로젝트
- 자바스크립트
- 개발
- 백엔드 개발
- 개발일지
- SQL
- 백준
- Signal
- AWS
- 프로젝트
- JavaScript
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |