cyphen156

백준-입출력과 사칙연산-1008 A/B 본문

컴퓨터공학/알고리듬 풀이

백준-입출력과 사칙연산-1008 A/B

cyphen156 2023. 9. 21. 17:20

10869번: 사칙연산 (acmicpc.net)

 

10869번: 사칙연산

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

www.acmicpc.net

두 정수 A와 B를 입력받은 다음 A/B를 출력하면 되는 프로그램이다.

제약사항

  • A와 B는 10보다 작은 자연수이다.(0 < A, B < 10)
  • 실제 정답과 출력값의 절대오차 또는 상대오차가  10e-9(double형)이하이면 정답이다.
 

C 풀이

A/B_1008.c

#define _CRT_NO_SECURE_WARNINGS
#include <stdio.h>

double divide(int a, int b) {
    return (double)a / b;
}

int main() {
    int A, B;
    double result;
    scanf("%d %d", &A,&B);
    result = divide(A, B);
    printf("%.9lf", result);
    return 0;
}

C++ 풀이

A/B_1008.cpp

살짝 복잡해졌다.

precision(n)함수는 출력 형식자릿수를 n자리 까지 출력하라는 명령이고, 

std::fixed는 소숫점 이하 자릿수로 출력형식을 고정하라는 의미이다.

둘을 합쳐서 소숫점 이하 자릿수 n자리까지 출력하라는 의미이다.

이것을 모른다면 문제를 맞출 수 없다.

#include <iostream>

using namespace std;

int main()
{
	double A = 0., B = 0.;
	cin >> A >> B;
	cout.precision(9);
	cout << fixed << A / B << endl;
	return 0;
}

Extra 

C++ std::cout객체를 사용하면 인스턴스가 생성되기 때문에 메모리 사용량이 C언어에 비해서 2배가까이 사용한다.

이것을 최적화한 코드

A/B_1008_fix.cpp

#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>

using namespace std;

int main()
{
	double A, B;
	scanf("%lf%lf", &A, &B);
	printf("%.9lf", A / B);
	return 0;
}

모든 예제 코드의 소스파일은 제 개인 깃허브 레포지토리 에 있습니다.

Workspace/알고리듬 풀이 at main · cyphen156/Workspace · GitHub