얼렁뚱땅 개발 블로그

[백준 Baekjoon] 1008번 - c언어 본문

코딩테스트/백준

[백준 Baekjoon] 1008번 - c언어

김경원0519 2020. 10. 14. 17:25
반응형

문제

두 정수 A, B를 입력받고 A/B를 출력한다.

 

풀이

단순히 /를 이용하여 A/B를 계산하는 문제라고 생각하기 쉽지만 이 문제를 풀기 위해서는 실제 나눗셈을 하는 방식으로 풀어야 된다.

 

나눗셈을 계산할 때는 나머지가 0일 때까지 나머지를 계속 나눈다. C언어에서 나머지를 계산하는 방법은 % 이다.

 

[알고리즘]

1. A / B를 출력하고 A % B를 하여 나머지를 변수에 저장한다.

2. 나머지가 0이 아닐 때는 소수점 뒷자리 계산을 시작한다. 0일 때에는 계산을 종료한다.

3. 나머지가 계속 0이 될 때까지 나머지에 10을 곱하고 계산을 한다.

 

 

[예외 처리]

몫이 순환소수이거나 무환 소수 일 수도 있다. 그렇기 때문에 count라는 변수를 이용하여 소수점 뒤 자리 개수를 세준다. 만약 개수가 33개 일 때는 계산을 종료한다.

코드

#include <stdio.h>

int main() {
	int a, b, mod, cnt = 0;

	scanf("%d %d", &a, &b);

	printf("%d", a / b);
	
	mod = a % b;

	if (mod != 0) {
		printf(".");
		while (mod != 0) {
			cnt++;
			if (cnt == 33) {
				break;
			}
			mod *= 10;
			printf("%d", mod / b);
			mod %= b;
		}
	}

	return 0;
}
반응형
Comments