1. Compare함수
- priority_queue
struct comp{
bool operator()(type a, type b){
return a > b;
}
};
priority_queue<type, vector<type>, comp> pq;
pq의 비교 함수는 구조체로 구현할 수 있다.
pq는 heap 형태로써 a와 b는 각각 부모 노드, 현재 노드이며 조건에 맞을 시 교환이 이루어진다.(default : max heap)
(즉 예시는 현재 노드 b의 값이 부모 노드 a보다 작으면 교환이 이루어지는 형태로 min heap 구현 코드이다)
- sort
#include <algorithm>
...
bool comp(type a, type b){
return a > b
}
...
sort(vector.begin(), vector.end(), comp);
algorithm 라이브러리 함수인 sort의 비교함수는 메서드로 구현할 수 있다.(default : 오름차순)
sort의 기본 정렬은 오름차순이며 예시의 comp함수는 내림차순으로 정렬하는 비교함수이다.
2. std::ios::sync_with_stdio(false);
<iostream>의 cin, cout은 C의 I/O 함수들과 동기화를 유지하는 작업이 추가로 들어가 있기 때문에 더 느리다.
이에 따라 std::ios::sync_with_stdio(false); 로 C의 I/O 함수들과 동기화를 꺼주면 빨라진다.
추가로 cin을 cout으로부터 untie 한다. stream을 tie하면 다른 stream에서 입출력요청이 오기전에 stream을 flush시킨다.
C의 I/O 함수들과 동기화를 하지 않기 때문에 다음을 주의한다.
1) scanf와 printf와 섞어서 사용하지 않기
2) 싱글 쓰레드 환경에서만 사용하기
3. 출력 형식(소수점)
// ios::sync_with_stdio(0);
// cin.tie(0);
cout << fixed;
cout.precision(2); // 소수 2자리까지 출력
출력 전 위와 같이 설정해둔다.
4. cstring vs string libraray
1) cstring == string.h
배열 기반으로 문자열을 저장, 문자열 마지막에 \0가 항상 삽입
자신의 크기를 알지 못한다(따라서 매번 strlen함수를 사용해서 구하는 것)
2) string
c의 문자열(cstring) 불편,문제점을 개선한 형태
참조
https://jhnyang.tistory.com/99
5. c++ split 구현
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
using namespace std;
vector<string> split(string str, char Delimiter) {
istringstream iss(str);
string buffer;
vector<string> result;
// istringstream은 istream을 상속받으므로 getline을 사용할 수 있다.
while (getline(iss, buffer, Delimiter)) {
result.push_back(buffer);
}
return result;
}
'알고리즘 > 알고리즘풀면서...' 카테고리의 다른 글
다시 풀어볼만한 문제 모음 (1) | 2021.10.03 |
---|---|
최단경로 알고리즘 정리 : 다익스트라, 벨만포드, 플로이드-와샬 (0) | 2021.08.29 |
구현 팁 (0) | 2020.10.31 |
SQL 팁 (0) | 2020.10.22 |
JAVA 팁(1) (0) | 2020.10.13 |