본문 바로가기
반응형

C++7

최소신장트리 (MST) 핵심 코드 | c++ 최소신장트리의 가장 기본이 되는 코드입니다. 해당 유형의 문제들은 다 이 코드를 수정해서 풀이할 수 있을 것입니다. 사실 최소신장트리의 핵심은 union find 이기 때문에 최소신장트리라고 지칭하는것 보다 union find 응용 문제라고 하는것이 더 나을지 모릅니다. int parent[10001]; struct node { int start; int end; int dist; node(int a, int b, int c) { start = a; end = b; dist = c; } }; struct compare { bool operator()(node a, node b) { return a.dist > b.dist; } }; priority_queue v; int find(int u) { if(u.. 2021. 2. 19.
자료구조-펜윅트리 핵심 코드 | c++ 잦은 업데이트와 합을 구하는데 사용되는 펜윅 트리입니다. 코드가 암기만 하면 너무 간단하여 저는 인덱스트리보다 펜윅트리를 선택했습니다. 뭔가 인덱스트가 조금 더 범용적으로 사용된다긴 하지만 저는 제 기억력의 한계를 알고 있기 때문에 펜윅트리로 정착했습니다. 업데이트 코드입니다. int tree[100]; void update(int a, int diff) { while(a 0) { ans += tree[a]; a -=(a & -a); } return ans; } 확실히 인덱스 트리보다 훨씬 더 코드가 간결하고 간단합니다..... 이제 남은건.. 2021. 1. 29.
그래프-다익스트라 code | c++ 그래프에서 한점에서 한점까지 최단거리를 계산하는데 사용되는 다익스트라 알고리즘의 핵심 코드 입니다. void dijkstra(int start) { //시작 지점 넣고 d[start] = 0; priority_queue pq; pq.push(node(start, 0)); //포문 돌린다. while (!pq.empty()) { //현재 위치 거리 꺼내고 int current = pq.top().next; int distance = pq.top().distance; pq.pop(); //최단거리가 아닌경우 스킵 if(d[current] < distance) continue; //현재에서 이어져있는 모든 노드 호출 for (int i = 0; i < arr[current].size(); i++) { //선택.. 2021. 1. 29.
[c++] range based for 사용하기 (for 문 간단히 사용하기!!!) 하 진짜.... 이게 내 길인지 모르겠다. 그냥 적성에도 안 맞는거 꾸역 꾸역 하고 있는 느낌인데... 나이도 이제 적지 않은데 이거 이렇게 잡고 있는게 맞는가 하.... 깝깝함 암튼 일단 프로그래밍을 언어를 배우게 되면 우선 가장먼저 배우는게 두 가지가 있는데 내 생각에는 바로 1. if 2. for 라고 생각한다. if는 분기처리 for는 반복 if는 사람이 판단하는것 처럼 조건을 걸어 컴퓨터 대신에 사람이 판단조건을 넣어주고 for는 사람이 할 수 없는 컴퓨터의 특기인 엄청난 양의 반복을 시키는 명령어 이다. 가장먼저 배우기 때문에 나같이 하 프로그래밍에 특별히 재능이 없거나 크게 목숨걸지 않는 사람들은 제일 처음 배운 그 원형 형태의 for 문을 사골을 우려먹을때 까지 사용할거다. 하 그런데 나처.. 2020. 8. 30.
c++ include 시 <> 와 "" 의 차이 안녕하세요 악마근육남입니다. 요즘 다시 c++을 보고 있는데 보다보니 별 생각없이 받아들이던것 중에 궁금한게 생겼습니다. 궁금증이 생긴게 여러가지가 있었는데 그중 하나가 c++ 내용중에 거의 매번 최상위에 적히게 되는 #include "temp.h" #include 문구 입니다. 두 개다 특정 라이브러리를 가지고 오라는 명령인데 둘의 차이는 뭘까요?? 저도 몰라서 찾아봤습니다. "" 은 개발자가 구체적으로 지정해 놓은 경로에서 헤더 파일을 찾습니다. 은 대게 시스템에서 가지고 있는 헤더파일을 include 하는데 사용합니다. 따라서 ""은 구체적인 경로가 들어갈 경우도 있지만 은 이미 경로를 컴파일러가 감지하고 있기 때문에 구체적 경로가 적히지 않는 것입니다. 결국 ""은 커스텀 은 디폴트라고 보시면 될.. 2020. 8. 23.
MSBuild.exe를 사용해 솔루션에서 특정프로젝트 빌드하기!!! 안녕하세요 악마근육남입니다. C, C++, C# (ms visualstudio 툴을 사용하는) 기반의 솔루션(Solution)을 개발한다고 했을 때 웬만해서는 하나의 프로젝트(Project)만으로 원하는 모든 기능을 구현할 수 없습니다. 그래서 하나의 솔루션에 다양한 프로젝트들이 포함되어 있는것이 일반적인 구조입니다. 이러한 구조일 경우 솔루션(Solution)을 빌드하게 되면 솔루션 파일에 정의된 순서대로 내부의 프로젝트드들이 빌드되게 됩니다. 하지만 필요에 따라서 개발자는 전체 솔루션중에서 하나의 프로젝트만 빌드해 테스트해보고 싶은 경우가 있을 수 있습니다. 당연히 솔루션이 프로젝트드들의 합으로 구성되어 있기 때문에 모듈화 장점을 활용할 수 있습니다. 이렇게 솔루션안에 포함되어 있는 특정 프로젝트를 .. 2020. 5. 11.
알고리즘에 쏠쏠한 swap 함수 알고리즘 문제를 풀다보면 정렬을 해야할 경우가 많이 생긴다. 정렬의 기본적인 로직은 A B 두 항목을 비교해서 설정한 로직에 따라 순서를 바꾸는 것이다. 조건에 따라서 이런 정렬을 자주 해야하는데 거기서 A B의 순서를 바꿔주는 행위는 필수 적이다. 이걸 지금까지 매번 구현했었는데.... algorithm에 구현되어 있는 걸 얼마 전에 알았다. 그 이름도 너무도 직관적이게 swap!!!!!!! 물론 알고리즘 expert 레벨에서는 include를 할 수 없기 때문에 전부 자기가 구현해하기 때문에 장기적으로 보면 모두 다 바로바로 구현할 수 있는게 시험을 대비하는데는 좋겠지만.... 이미 아는 로직에 더 이상 불필요한 시간을 할애하지 않아도 되니까! [사용법] 1. 라이브러리 호출 #include 2. 사.. 2019. 8. 20.
반응형