[알고리즘] 2-1. [C/C++] 다익스트라를 활용한 최단 경로찾기
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
출발점, 도착점 사이의 최단 경로를 알아내는 알고리즘,
각 꼭지점은 도시를 나타내고 변은 도로의 길이를 나타날 때,
도시간 최단경로 찾기가 문제이다
최단 경로 찾기에선 가장 간단한 문제 이기도 할 것이다.
일단 5개의 도시로 고정되어있고,
-1은 갈 수 없는 거리 0은 자기 자신을 표현한다.
알고리즘을 대략적으로 설계하면,
for i -> 0 , 5 , 1
[시작도시][i]로 전체를 검사한다.
완전탐색이지만, 예외조건을 둔다
0과 -1을 제외하고, isVisit을 도시크기만큼 2차원 배열을 같이 두어
방문 체크를 한다.
그리고 최소값만을 Return하는 형식을 취하면 될 것 같다.
도시를 출력하고자 한다면, vector를 따로 두어, 경로를 push_back 하면 될 것 같긴하다.
테스트 케이스 및 자료는 [알고리즘 자료] 2-1 을 보시면 있습니다.
#include#include using namespace std; int city[5][5] = { 0, }; bool isVisit[5][5] = { false, }; bool isFinal = false; bool isPossiblePath(int val) { if (val == 0 || val == -1) return false; return true; } void VisitCheck(int src, int dst) { isVisit[src][dst] = true; } void VisitUnCheck(int src, int dst) { isVisit[src][dst] = false; } int Dijkstra(int src,int dst,int fDst,int path) { path = path + city[src][dst]; if (dst == fDst) return path; // 하나의 경로를 찾은 것 int result = 9999; for (int i = 0; i < 5; i++) { if (!isPossiblePath(city[dst][i]) || isVisit[dst][i] == true) continue; int temp = 0; VisitCheck(dst, i); // 방문 체크 temp = Dijkstra(dst, i, fDst, path); VisitUnCheck(dst, i); // 방문 체크 해제 result = min(temp, result); } return result; } int _tmain(int argc, _TCHAR* argv[]) { FILE *fp = fopen("test.txt", "rt"); if (fp == NULL) { cout << "FILE OPEN ERROR" << endl; return 0; } int src,dst = 0; fscanf(fp, "%d %d\n", &src, &dst); char temp; for (int i = 0; i < 5; i++) for (int j = 0; j < 5; j++) fscanf(fp, "%d%c", &city[i][j], &temp); int result = 9999; for (int j = 0; j < 5; j++) { if (!isPossiblePath(city[src][j])) continue; int temp; VisitCheck(src, j); temp = Dijkstra(src, j, dst,0); VisitUnCheck(src, j); result = min(temp, result); } if (result == 9999) cout << "도시까지의 경로가 존재하지 않습니다" << endl; else cout << result << endl; return 0; }
추가로 읽으면 좋을 것
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 블로그의 인기 게시물
윤석열 계엄령 선포! 방산주 대폭발? 관련주 투자 전략 완벽 분석
## 1. 배경 2024년 12월 3일, 윤석열 대통령이 국가 비상사태를 이유로 계엄령을 선포하였습니다. 계엄령은 전시나 사변 등 국가의 안녕과 공공질서가 심각하게 위협받을 때 대통령이 군사적 권한을 통해 이를 방어하고 유지하기 위해 발효하는 특별한 조치입니다. 이러한 조치는 국내 정치·경제 전반에 큰 영향을 미치며, 특히 주식시장에서는 관련 기업들의 주가 변동이 예상됩니다. 24.12.03 오전 5시 계엄 해제로 아래 관련주 추천 - [윤석열 계엄령 해제! 이재명 관련주 급등? 투자자 필독 전략](https://warguss.blogspot.com/2024/12/yoon-martial-law-lift-lee-jaemyung-stocks.html) --- ## 2. 기업 및 관련주 ### 2-1 식품 관련주 - 계엄령이 선포되면 사회적 불안정성이 증가할 수 있으며, 이에 따라 생필품 및 음식 관련 주식이 단기적으로 강세를 보일 가능성이 있습니다. #### 1. CJ제일제당 (KOSPI: 097950) [시가총액: 약 10조 원] - **주요 산업**: 식품 및 생필품 제조 - **관련주 근거**: 국가적 위기 상황에서 식료품 수요가 증가하며, 즉석밥, 가공식품 등의 판매가 확대될 가능성이 있습니다. - **주가정보**: [네이버 차트](https://finance.naver.com/item/main.nhn?code=097950) #### 2. 오뚜기 (KOSPI: 007310) [시가총액: 약 3조 원] - **주요 산업**: 식품 제조 및 유통 - **관련주 근거**: 라면, 즉석식품 등 비축 가능한 식품 수요가 증가하며, 매출 상승이 기대됩니다. - **주가정보**: [네이버 차트](https://finance.naver.com/item/main.nhn?code=007310) #### 3. 대상 (KOSPI: 001680) [시가총액: 약 2조 원] - **주요 산업**: 식품 제조 및 발효제품 - **관련주 근거**: 계엄...
대통령 퇴진운동 관련주: 방송·통신·촛불수혜주 완벽 분석
--- ## 1. 배경 2024년 12월 3일, 윤석열 대통령이 비상계엄령을 선포했으나, 짧은 시간 내에 이를 해제하면서 정치적 긴장감이 커졌습니다. 이에 따라 대규모 촛불시위와 같은 사회적 움직임이 예상되며, 통신과 관련된 기업 및 촛불 제조와 연관된 산업에 관심이 모이고 있습니다. --- ## 2. 기업 및 관련주 대규모 시위 및 관련 활동으로 인해 통신, 미디어, 그리고 촛불 제조와 관련된 기업들이 단기적인 수혜를 볼 것으로 예상됩니다. ### 2-1. 통신 관련주 #### 1. **KT (030200) [약 12조 원]** - **주요 산업:** 통신 - **관련주 근거:** 시위 생중계 및 대규모 통신 트래픽 증가로 매출 증대 가능성 - **주가정보:** [네이버 차트](https://finance.naver.com/item/main.nhn?code=030200) #### 2. **SK텔레콤 (017670) [약 12조 원]** - **주요 산업:** 통신 - **관련주 근거:** 대규모 데이터 사용 증가로 인한 수익 상승 - **주가정보:** [네이버 차트](https://finance.naver.com/item/main.nhn?code=017670) #### 3. **LG유플러스 (KOSPI, 032640) [약 4.9조 원]** - **주요 산업:** 통신 - **관련주 근거:** 촛불시위로 인한 데이터 및 음성 서비스 사용 증가 예상 - **주가정보:** [네이버 차트](https://finance.naver.com/item/main.nhn?code=032640) --- ### 2-2. 방송 관련주 #### 1. **SBS (034120) [약 2,924억 원]** - **주요 산업:** 방송 및 미디어 콘텐츠 제작 - **관련주 근거:** 시위 관련 특집 방송 및 실시간 보도에 따른 광고 수익 증가 - **주가정보:** [네이버 차트](https://finance.naver.com/item/main.nhn?code...
키움 OPEN API MFC 개발 (1)
* 키움 API 개발 - visual studio 2019 , MFC * Visual Studio Set - 새 프로젝트 만들기 / MFC 검색 - 다음 이후, MFC 설정에서 어플리케이션 종류 변경 (대화 상자 기반) * 기본 적용 Flow ( https://www.kiwoom.com/nkw.templateFrameSet.do?m=m1408000000 ) = 우선 생략하고, Step 2 설치 = Step 3 자료실/ KhOpenApiTest_2.71.zip 다운로드 * Step 2 설치 후, 설치 경로의 OpenAPI 디렉토리 찾기 1. 파일 찾기 2. KHOpenAPI.ocx 를 프로젝트 소스에 복사 * Step 3 자료실/다운로드 1. khOpenApiTest_2.71.zip 다운/압축 풀고, 2. KHOpenAPI.cpp/h KHOpenAPICtrl.cpp/h 프로젝트 소스에 복사 * 내부 소스에 다음추가 header에 class 생성 cpp에 다음 소스 추가 * 리소스 뷰 > IDD_TRADINGAPP_DIALOG 1. 확인 우클릭 > Active X 컨트롤 삽입 2. KHOpenAPI Control 적용 하면 위 화면처럼 적용 이후 실행 시 다음 화면 이후 매수/매도 적용
댓글
댓글 쓰기