Make Unreal REAL.
article thumbnail
약수의 개수를 구하는 알고리즘 수행 시간 비교

프로그래머스를 풀다가 누군가 독특한 방법으로 약수의 개수를 구하는 걸 발견해서 성능을 테스트 해보기로 했다. 우선 내가 작성한 알고리즘이다. num까지 순회할 필요 없이 제곱근까지 순회하며 2개씩 더하는 방식이다. int getNumberOfDivisor(int num = 1020) { int last = sqrt(num); int count = (pow(last, 2) == num) ? -1 : 0; for (int i = 1; i

article thumbnail
map에서 존재하지 않는 키의 기본값

전에 알고리즘 스터디를 할 때 map의 키 존재 여부를 0으로 확인하는 것이 안전한지, 컴파일러에 따라 다른 것은 아닌지에 대해 의논했던 적이 있다. map default values std::map mapy; ++mapy[5]; Is it safe to assume that mapy[5] will always be 1? I mean, will mapy[5] always get the default value of 0 before '++', even if not explicitly declared, as... stackoverflow.com 위 쓰레드에 따르면 map의 [] 연산자는 키가 존재하지 않을 경우 value_type(std::move(x), T())을 통해 값을 삽입한다. T()는 void를 ..

article thumbnail
자료구조에 따른 insert()의 인자

insert() 함수로 값을 추가할 때 vector와 set의 인자가 다른 것을 발견했다. vector는 반복자를 첫 번째 인자로 받는 반면 set은 값만을 받는다. #include #include #include using namespace std; void main() { vector v1 = {1, 2}; vector v2 = {3, 4}; v1.insert(v1.end(), v2.begin(), v2.end()); set st = {1, 2}; st.insert(v2.begin(), v2.end()); } 생각해보니 이유는 간단했다. vector는 임의 위치에 원소를 추가할 수 있기 때문에 가능하지만 set은 정렬된 상태를 유지하기 때문에 원하는 위치에 원소를 추가할 수 없기 때문이다.

검색 태그