마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

프로그래밍/Baekjoon Online Judge

BOJ 15792번(A/B - 2) 문제 풀이

동동매니저 2019. 10. 20. 11:11

★ solved.ac 난이도 : B2

(2022년 03월 29일 기준)


[문제 바로가기]

 

15792번: A/B - 2

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

www.acmicpc.net


[풀이]

이 문제의 경우, 만점을 받기 위해서 약간의(?) 생각이 필요한 문제입니다.
단순하게 나눗셈 연산자를 사용할 경우, 2000점 만점에 18점(!)으로 예상하는데요,
여기에서 생각을 하셔야 합니다.
초등학교 때 배웠던 (손으로 계산하는) 나눗셈을 C언어로 옮기면 가능합니다.
(여기에서는 A/B를 계산합니다.)
먼저, 나눗셈의 몫을 계산하고 출력합니다.
그리고, 계산된 몫에 B를 곱해서 A에서 빼줍니다.
여기에서 A의 값이 0이면 즉, 나누어 떨어지면, 반복문을 종료합니다.
그렇지 않으면, 반복문을 계속 수행하면서 소수점 1001번째 자리까지 반복합니다.
여기에서 A에 10을 곱하는 것을 잊지 말아주세요~!
 

[소스 코드 (C언어)]

#include <stdio.h>

int main(void){
	int A,B;
	int pc=0;
	int i;
	scanf("%d %d",&A,&B);
	for(i=0;i<=1000;i++){
		int mok=A/B;
		A-=mok*B;
		if(mok>=10) printf("%d",mok);
		else putchar(mok+'0');
		if(A==0) break;
		if(A<B){
			if(!pc++) putchar('.');
			A*=10;
		}
	}
	return 0;
}