본문 바로가기
코딩/백준

[C] 백준 BOJ 1008 A/B

by 김두루미 2022. 6. 22.
반응형

https://www.acmicpc.net/problem/1008

 

1008번: A/B

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

www.acmicpc.net

문제 설명

백준의 문제 - 단계별로 풀어보기의 [입출력과 사칙연산] 의 1008 A/B 문제입니다.

 

이전 A+B, A-B, AXB 문제들과 동일해보이는 문제입니다.

 

근데 문제 옆에 보면 스페셜 저지라는 하늘색 상자가 하나 보입니다. 스페셜이 붙었으니 무언가 특별한 것이 있을 것 같은데 출력에 보니, "실제 정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하이면 정답으로 인정"한다고 명시되어 있습니다.

"10-9 이하의 오차를 허용한다는 말은 꼭 소수 9번째 자리까지만 출력하라는 뜻이 아니다." 도 명시가 되어 있습니다.

 

C언어에서 "%.9lf"로 출력을 하면 정답으로 인정되고 있습니다. 이에 관련된 절대오차와 상대오차는 추후에 다시 한 번 정리하겠습니다.

코드 (C언어)
#include<stdio.h>

int main(void)
{
	int A, B;
	double result;
	
	scanf("%d%d", &A, &B);
	result = (double)A / (double)B;
	
	printf("%.9lf", result); 

    return 0;
}

위의 코드는 2개의 정수 값을 입력받아 나누기 연산을 해야하는데, 나누기 연산자는 정수 / 정수를 할 경우 정수 몫만 구해주므로, 형변환 연산자를 통해 해당 줄에서만 실수로 인식되게 하여, 실수 / 실수 계산을 해야 정상적인 값이 나옵니다.

그 값을 저장하는 변수 result 역시 실수 자료형인 double 로 선언하여야합니다.

 

printf 문에서는 위에서 명시한대로 소수 9번째자리까지 출력하기 위해 "%.9lf"로 출력 형식을 잡아줍니다.

#include<stdio.h>

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

    return 0;
}

문제에서는 정수 2개라고 명시되어 있지만, 실수로 입력을 받아 실수 나누기를 해도 무관합니다.

반응형

'코딩 > 백준' 카테고리의 다른 글

[C] 백준 BOJ 10926 ??!  (0) 2022.06.24
[C] 백준 BOJ 10869 사칙연산  (0) 2022.06.23
[C] 백준 BOJ 10998 A×B  (0) 2022.06.21
[C] 백준 BOJ 1001 A-B  (0) 2022.06.20
[C] 백준 BOJ 1000 A+B  (0) 2022.06.19