본문 바로가기

알고리즘 시*련아

C++ 백준 1008번에 관해

참...

나 자신에게 깊은 실망을 하게된 문제다

 

이 문제로 말할것 같으면 두가지 핵심인 자료형과 출력만 잘 생각해주면 되는 문제다.

 

먼저 자료형으로 말할것 같으면 소수표현이 가능한 실수 자료형을 사용하는것이 당연하다.

C++에 있는 실수 자료형으로 말할것 같으면, float와 double이 있다

 

두 자료형의 크기는 각각 4byte, 8byte이다.(운영체제에 따라 다르겠지만)

자료형 크기 소수점이하 정밀도
float 4byte 6자리
double 8byte 15자리

실수자료형의 소수표현 오차는 가수부분의 크기가 크면 클수록 작다. 

오차범위 10^9자리까지 허용하는 이번 문제를 위해서는 double을 사용하는것이 인지상정이다.

 

좋다 double을 사용하자

 

그럼 이젠 출력만 잘 해주면 된다.

항상 블로그 포스팅은 c++이라고 표시하지만 c가 더 좋은 나는 printf를 사용할것이다.

 

printf의 숫자형 소수 자리수 표현은 아주 간단하다

printf("%.9f", a);

실수 포맷인 f앞에 얼마나 출력할지만 써주면 된다.

 

좋다 double을 사용하여 출력을 해주면 될것 같다.

#include <stdio.h>

int main(){
	int a, b;
    
    scanf("%d %d", &a, &b);
    printf("%.9f\n", a / (double)b);
}

아주 좋다.

 

한가지 집고 넘어갈게 있다면, 입력은 정수니 int a와 b를 선언하여 정수 입력을 받아주었다.

또한 나는 동성애자같이 변수를 만들지 아니하고 출력할때 b를 double자료형으로 형변환 해주어 실수연산을 하게 만들었다.

 

비하의 의미는 아니다.

'알고리즘 시*련아' 카테고리의 다른 글

백준 시간 초과와 시간 복잡도  (0) 2022.11.04
C++ STL sort() - 정렬6  (0) 2022.08.06
C++ 병합 정렬(합병 정렬) - 정렬5  (0) 2022.08.05
C++ 퀵정렬 - 정렬4  (0) 2022.08.05
C++ 삽입 정렬 - 정렬3  (0) 2022.08.04