BOJ | 1008번

송치헌·2021년 5월 26일
0
post-thumbnail

Python 풀이

A, B = input().split()
res = int(A)/int(B)
print(res)

이 문제는 다른 연산 문제와 다르게 소수점 아래 몇자리까지 출력해야 하는지 조절을 해야한다. 파이썬에서는 그냥 나눗셈(/)연산을 하면 소수점 아래 16자리까지 출력이 된다. 그래서 문제에서 요구하는 상대오차 10-9을 만족하기 때문에 신경쓰지 않아도 된다.

C++ 풀이

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    double A, B;
    cin >> A >> B;
    cout << setprecision(10) << A / B;
}

처음 풀이할 때는 소수점 컨트롤이 힘들어서 여러 풀이를 찾아보며 공부했다.
그러다 setprecision()이라는 함수를 알게 되었다.
이 함수는 iomanip이라는 헤더파일에 포함되어있는데 부동 소수점을 몇번째 자리까지 표기할 것인지 설정해 주는 함수이다. 이 문제는 A와 B가 둘 다 1부터 9까지만 가질 수 있으므로 몫이 9를 넘어갈 수 없다. 즉, 정수부가 한자리 수이므로 부동 소수점으로 표현해도 상대오차 10-9를 만족할 수 있다. 참고로 고정 소수점으로 표현하기 위해서는 다음과 같이 구현하면 된다.

#include <iostream>
using namespace std;

int main()
{
    int A, B;
    cin >> A >> B;

    cout << fixed; // 표준 출력을 고정 소수점으로 하겠다는 뜻
    cout.precision(9); // 소수점 아래 9자리까지 출력. 참고로 소수점 아래 9번째 자리까지 반올림을 한다.
    cout << (double)(A/B);
}

fixed는 출력을 고정 소수점으로 한다는 함수이다.
precision(9)는 소수점 아래 9번째 자리까지 표현한다는 함수이다.

아래 코드는 C언어 표준입출력 라이브러리인 stdio.h를 사용하여 구현한 코드이다.

#include <stdio.h>

//using namespace std;

int main()
{
    double A, B;
    scanf("%d%d",&A,&B); // A와 B를 입력받는다.
    printf("%.9lf",A/B); // "%.9lf"는 소수점 아래 9번째까지 출력하게 해주는 서식 지정자이다. %lf 는 double형 변수를 받아올 때 사용한다.
}
profile
https://oraange.tistory.com/ 여기에도 많이 놀러와 주세요

0개의 댓글