목록Algorithm (3)
채록채록
백준 문제 풀다가 static을 컴파일러가 어떻게 처리하길래 전역 변수와 같은 영역의 메모리 데이터 세그먼트에 저장되는지 궁금해져서 지피티에게 물어본 내용을 정리하기.static vector> A;A를 Data영역(DATA+BSS)에 배치하여 한 번만 생성된다.특정 범위(함수, 파일, 클래스)에 한정되도록 관리한다. 변수 은닉 / 전역 네임스페이스 오염을 방지하기 위해 사용된다. 까지가 원래 알고있던 내용이라면...static 키워드는 컴파일러에게 해당 변수에 대해 duration과 linkage을 적용하라고 지시하는 컴파일 타임 정보이다. = 컴파일러와 링커가 협력해서 다른 메모리 영역에 배치하고 연결범위를 제어한다. 1. 컴파일 단계각 소스 파일을 .o(오브젝트 파일)로 컴파일할 때:변수/함수의 **..
기본인데도 자꾸 까먹어서 기록하는 것...template, class Compare = std::less> class priority_queue;prioriry_queue는 함수 타입을 받는게 아니라, 비교 객체의 타입을 템플릿 인자로 받는다. 그러므로 오름차순 정렬을 하고 싶으면 다음의 2개의 방법을 사용할 수 있다. 1. 구조체 + operator() 사용struct cmp { bool operator()(const pair& a, const pair& b) const { return a.second > b.second; }};priority_queue, vector>, cmp> pq; // OKcmp는 type이기 때문에 priority_queue 템플릿 인자로 넘길 수..
알고리즘 공부 계속 안했더니 바로 뇌가 초기화되어서 하나도 기억안난다...근데 사실 당연함 원래 그렇게 잘하지도 못했음.. 늦었다고 생각될 때 일단 열심히하장. DFS (Depth-First Search)_깊이우선검색한 방향으로 모든 노드를 방문하다가더이상 다른 노드를 방문할 수 없는 노드에 이르렀을 때다시 가장 가까운 갈래길로 돌아가 방문하지 않은 노드 방향으로 탐색을 이어간다.간선이나 변수 정보를 수시로 변경해야할 때 DFS를 활용한다.한 노드를 시작으로 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색이걸 구체적인 동작 과정을 정리하면…탐색 시작 노드 정보를 스택에 삽입하고 방문처리한다.스택에 한번이라도 삽입된 노드를 다시 삽입하지 않도록 체크탐색한 노드를 재방문하지 않도록 구분하..