시간복잡도 & 빅오표기법
시간복잡도에 따른 수행시간
시간복잡도에 따른 입력 범위의 크기

 

** 메모리 제한이 512MB int 변수를 대략 1.2억개 정도 선언할 있다.

long long = 8 byte = 64 bit

int  = 4 byte = 32 bit

char = 1 byte = 8 bit

 

float = 4 byte, double = 8 byte

 

 

** 실수 자료형 **

1. 실수의 저장/연산 과정에서 반드시 오차가 발생할 수 밖에 없다.

실수를 이진수로 표현시 오차가 발생한 채로 저장이 된다

float는 유효숫자가 6자리이므로 상대오차 10^-6까지 안전하고,

double은 유효숫자가 15자리이므로 10^-15까지 안전하다

오차허용범위에서 볼 수 있든 두 자료형끼리 차이가 굉장히 크기 때문에

알고리즘 문제에서는 실수 자료형이 필요한경우 대부분 double을 사용하게 된다

 

2. double에 long long 범위의 정수를 함부로 담으면 안된다.

double은 유효숫자가 15자리고, long long은 최대 19자리라 범위가 맞지 않아 오차가 생긴다

int는 약 최대 21억까지 저장되기 때문에 double에 담아도 오차가 생기지 않는다

 

3. 실수를 비교할 때는 등호를 사용하면 안된다.

오차 때문에 두 실수가 같은지를 꼭 알고 싶어야할 때는 둘의 차이가 아주 작은 값인

대략 10^-12이면 동일하다고 처리를 하는게 안전하다

if (abs(a - b) < 1e-12) cout << "same";

 


# 출처

https://blog.encrypted.gg/category/%EA%B0%95%EC%A2%8C/%EC%8B%A4%EC%A0%84%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

'Algorithm > 정리' 카테고리의 다른 글

0x0E,0F - 정렬  (0) 2022.02.28
0x02 - 기초 코드 작성 요령2  (0) 2022.02.15
cpp  (0) 2022.02.10
0x0C - Backtracking  (0) 2022.01.31
0x0B - 재귀  (0) 2022.01.25

+ Recent posts