- 알고리즘의 잘못된 부분을 찾는거 보다는 테스트 케이스 빨리 작성하고 출력해보면서 어떤 테스트케이스가 안되는지 확인하고 수정하는 게 좋은듯
- 최대/최소 문제
- 최소 문제의 경우 최소보다 큰 값은 필요없다.
- 최대 문제의 경우 최대보다 작은 값은 필요없다.
- 결과를 도출하는데 있어서 불필요한 연산을 찾고, 줄이도록 해야함.
time_t start = clock();
// work
time_t end = clock();
cout << (double) (end - start) / CLOCKS_PER_SEC << "(s)\\n;"
// 2차원 배열
char board[1000][1000];
fill(&board[0][0], &board[999][1000], 0);
// 3차원 배열
int vis[5][5][5];
fill(&vis[0][0][0], &vis[4][4][5], 0);
// 2차원 벡터
vector<vector<int>> v;
fill(v.begin(), v.end(), vector<int>(5, 0));
sort(arr.begin(), arr.end());
arr.erase(unique(arr.begin(), arr.end()), arr.end());
int s = 257, l = 0;
for(int i = 0; i < n; i++){
int x = *min_element(&board[i][0], &board[i][m]);
int y = *max_element(&board[i][0], &board[i][m]);
if(x < s) s = x; if(y > l) l = y;
}
- 교집합, 차집합, 합집합은 Algorithm의 set_union, set_intersection, set_difference를 이용
vector<string> v(a.size() + b.size());
auto iter = set_intersection(a.begin(), a.end(), b.begin(), b.end(), v.begin());
v.resize(iter - v.begin());
int countDigit(int num){ // 숫자의 자리수를 반환하는 함수, ex. 1024 -> 4
return to_string(num).size();
}
// 배열 복사
memcpy(temp, board, sizeof(temp));
// 벡터 복사
copy(maze.begin(), maze.end(), temp1.begin());