분류 전체보기(1142)
-
[수정 전] Makefile 작성하기 2019.11.16
-
LRU Cache의 자료구조
페이지 교체 알고리즘 중 하나로 가장 hit율이 좋다고 알려진 LRU는 Least Recently Used의 약자로 가장 늦게 쓰여진 페이지가 교체 대상이 되는 것이다 자료구조는 map을 원소로 하는 리스트 기반으로 이뤄져 있다 [참고] https://www.geeksforgeeks.org/lru-cache-implementation/
2019.11.16 -
new 연산자를 이용한 2차원 배열 할당
malloc과 비슷하게 먼저 각 행에 대한 base 주소를 할당하고 주소 하나당 열에 맞춰서 크기를 할당해서 2차원 배열을 만들 수 있다. new의 장점은 할당을 하면서 초깃값을 정할 수 있다는 점이다 #include using namespace std; int main(void) { int **ptr = new int*[3]; for (int i = 0; i < 3; i++) { ptr[i] = new int[5]{ 1, 2, 3, 4, 5 }; } for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { cout
2019.11.16 -
가상 소멸자가 필요한 이유
다형성에서 주로 거론이 된다. 주로 자식 클래스인 derived는 누구에게서 만들어졌는지 종종 모를 때가 많다. 따라서 base 클래스의 포인터를 선언해서 자식 클래스를 지정해서 삭제하는 경우가 대부분이다 #include using namespace std; class Base { public: ~Base() { cout
2019.11.16 -
11^n 이항정리로 구하기
파스칼의 삼각형을 이용하면 이항계수를 쉽게 구할 수 있다. 쉽게 구한 이항계수를 통해서 11^n도 이항정리로 해결할 수 있는데 풀이는 다음과 같다
2019.11.16 -
2004 조합 0의 개수
끝자리에 있는 연속된 0의 개수를 찾는 문제다. 0이 나온다는 것은 10이 곱해졌는 얘기고, 10을 소인수분해하면 2, 5의 인수가 나오기 때문에 2, 5 중 최소 개수를 찾으면 된다 N 제한이 20억이기 때문에 20억을 모두 탐색하면서 나머지 연산을 할 수는 없다 빠르게 2, 5의 개수를 찾는 방법 [참고] https://ksj14.tistory.com/entry/BackJoon1676-%ED%8C%A9%ED%86%A0%EB%A6%AC%EC%96%BC-0%EC%9D%98-%EA%B0%9C%EC%88%98 따라서 조합은 nCr = n! / ((n-r)!*r!) 이므로 각 값에 해당하는 2, 5의 개수를 각각 배열에 담아서 저장해서 마지막에 계산하면 된다. 분자와 분모는 -관계이기 때문에 빼주면서 최소값을..
2019.11.15