본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 1008번: A/B [C++]

문제 출처: www.acmicpc.net/problem/1008

 

1008번: A/B

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

www.acmicpc.net

 

1. 코드

(예제 1 실행) (예제 2 실행)

2. 풀이

cout.precision(10);

나머지 부분에 대해서는 잘 알고 위에 있는 코드 부분에 대해 설명하겠다. 위 코드는 출력 시 큰 자리부터 10자리를 출력하겠다는 말이다. 만약 가로 안에 숫자가 3이라고 하면 출력시 큰 자리가 나온다 예를 들어 설명하겠다.

#include <iostream>

using namespace std;

int main()
{
    double A = 1.2345678912;

    cout.precision(10);
    cout << A << endl;      //출력: 1.234567891

    cout.precision(3);
    cout << A;              //출력: 1.23

    return 0;
}

위 코드를 보면 cout.precision(10)일 때는 맨 앞자리 1부터 시작해서 소수점 뒤에 있는 1까지 출력한다. 그래서 총 10자리가 출력이 되고 cout.precision(3)일 때는 맨 앞자리 1부터 소수점 뒤에 있는 3까지 총 3자리가 출력이 된다.

#include <iostream>

using namespace std;

int main()
{
    double A = 1.234;

    cout.precision(10);
    cout << A << endl;      //출력: 1.234

    return 0;
}

그리고 초과하는 경우를 살펴보자. 10자리를 표현하고 싶지만 선언된 변수에 저장된 수는 1.234까지 밖에 없어서 그대로 출력을 진행한다. 그렇기 때문에 문제의 예제 입력 중 4 5에서 0.8이 나오고 1 3에서는 0.3333333333이 나온 것을 적용시킬 수 있다.

 

3. 느낀 점

C언어에서는 출력 조절하는 것이 printf에서 이루어졌는데 C++에서는 cout의 속성을 이용하여 조절하는게 조금 신기하게 느꼈다. 그리고 이렇게 모르는 부분이 많을 것 같아서 조금 걱정이다.