본문 바로가기
코딩과 알고리즘

백준알고리즘 1008번 풀이

문제

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A/B를 출력한다. 절대/상대 오차는 10-9 까지 허용한다.

예제입력

1 3

 

예제출력

0.33333333333333333333333333333333

 

이 문제는 무지 간단해 보이는데 한가지를 모르면 좀 어려울수도 있습니다.

그냥 무턱대고 cout << a / b << endl; 로 돌진할 수도 있는데

크레이도 틀렸다가 다시 맞춘 문제입니다 :)

사실 크레이 전문분야는 C++이 아니라 C#이고 과거에는 C언어였었던 지라 이 부분은 잘 몰랐지요 :)

이 문제는 예제출력에 힌트가 있습니다.

소숫점이 매우 길지 않습니까?

0.3333333333333333333333333333...

그리고 문제 지문에 절대/상대 오차는 10-9 까지 허용한다. 라고 되어 있기 때문에

소숫점 9자리까지 맞추면 되는 문제이긴 하지요.

cout << a / b << endl; 는 출력결과가 그다시 정확하지 않게 나옵니다.

이럴 경우 자릿수를 지정하는 함수를 사용해주어야 하는데요.

cout.precision(20); 이라고 다음에 출력할 소숫점 자릿수를 지정해주시면 됩니다.

아래 답안 소스에서 파란 색 부분이 해결책이지요 :)

#include <iostream>

using namespace std;

​

int main()

{

  double a=0, b=0;

  cin >> a >> b;

  cout.precision(20);

  cout << a / b << endl;

  return 0;

}

 

반응형