algorithm/정리

알고리즘 - 기초 코드 작성 요령

ssoheeh 2024. 4. 14. 18:16

시간복잡도, 공간복잡도

시간복잡도 - 입력의 크기와 문제를 해결하는데 걸리는 시간의 상관관계

    제한 시간 1초 -> 프로그램이 3-5억번의 연산 안에 답을 내고 종료

빅오표기법 - 주어진 식을 값이 가장 큰 대표항만 남겨서 나타내는 방법

 

 

공간복잡도 - 입력의 크기와 문제를 해결하는데 필요한 공간의 상관관계

    512MB = 1.2억개의 int

 

 

실수 자료형

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

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

3. 실수를 비교할 때는 등호를 사용하면 안된다. (둘의 차이가 아주 작다는 의미로 1e-12 사용 권장)

int main(void){
	double a = 0.1+0.1+0.1;
    double b = 0.3;
    if(a==b) cout<<"same1";
    if(abs(a-b) <1e-12) cout<<"same2";
}
/***result***
same 2
************/

 

 

C++ STL

vector - 일종의 가변배열

void func1(vector<int> v){
	v[10] = 7;
}

int main(){
	vector<int> v(100);
    func1(v);
    cout<< v[10];
}

//0 : vector는 함수 인자로 실어보내도 원본에 영향 X, 배열은 주솟값을 주기때문에 영향 O

 

bool cmp2(vector<int>& v1, vector<int>& v2, int idx){
	return v1[idx]>v2[idx];
}
//복사본 만들지 않고 참조대상의 주소 정보만 넘어가서 시간복잡도 줄일 수 있음

 

 

 

표준 입출력

cin/cout 입출력으로 인한 시간초과 막기 위해

cin.tie(0);
ios::sync_with_stdio(0);

 

endl 절대!!!!! 쓰지 말것!! "\n"출력

 

 

출력 맨 마지막 공백 혹은 줄바꿈이 추가로 있어도 상관 X

 

 

참고 - 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?page=2

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

배열  (0) 2024.04.17
DFS  (0) 2024.04.16
재귀  (0) 2024.04.11
BFS  (0) 2024.04.10
자바 기본 자료구조 선언 정리  (0) 2024.04.09