Algorithm
-
[Python][C++] 1916번 최소 비용 구하기Algorithm/Baekjoon 2024. 10. 23. 16:56
문제 https://www.acmicpc.net/problem/1916 코드1. Pythonimport sysimport heapqinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# n: 도시(노드)의 개수, m: 버스(간선)의 개수n = int(input())m = int(input())# 그래프 초기화 (1번 도시부터 시작하므로 n+1 크기)graph = [[] for _ in range(n+1)]# 방문 배열 초기화, 각 도시에 도달하는 최소 비용을 저장, 무한대 값으로 초기화visited = [1e9] * (n + 1)# m개의 간선 입력 처리for _ in range(m): start, end, cost = map(int..
-
[C++] 1865번 웜홀Algorithm/Baekjoon 2024. 10. 23. 16:10
문제https://www.acmicpc.net/problem/1865 코드#include #include using namespace std;// 간선 구조체 정의struct Edge { int s, e, w; // s: 시작점, e: 끝점, w: 가중치};// 벨만-포드 알고리즘: 음의 사이클이 있는지 검사bool bellmanFord(const vector& edges, const int& N) { vector dist(N + 1, 0); // 각 노드의 최단 거리를 저장하는 배열 (1-based index) // N번 반복하여 모든 간선을 확인 for (int i = 1; i dist[edge.s] + edge.w) { dist[edg..
-
[Algorithm] 벨만-포드(Bellman-ford) 알고리즘Algorithm/Concepts 2024. 10. 23. 15:00
벨만-포드(Bellman-ford) 알고리즘이란?벨만-포드 알고리즘은 최단 경로 알고리즘 중 하나로, 그래프 내의 모든 정점에서 특정 시작 정점까지의 최단 경로를 찾는 알고리즘이다. 특히, 음수 가중치를 가진 간선이 있는 그래프에서도 작동하며, 음수 사이클을 감지할 수 있다. 시간복잡도벨만-포드 알고리즘의 시간 복잡도는 O(V * E)이다. 여기서 V는 정점의 수, E는 간선의 수를 의미한다. 이 시간 복잡도는 모든 간선에 대해 V−1번의 반복을 수행하는 것에서 비롯된다. 벨만-포드 알고리즘의 기본 원리초기화:시작 정점을 제외한 모든 정점까지의 거리를 무한대(∞)로 설정시작 정점의 거리는 0으로 설정계산:그래프의 모든 간선에 대해 정점을 반복적으로 탐색각 간선을 검사하여, 해당 간선을 통해 더 짧은 ..
-
[MySQL] 즐겨찾기가 가장 많은 식당 정보 출력하기Algorithm/Programmers 2024. 10. 13. 15:29
문제https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이-- REST_INFO 테이블에서 음식 유형(FOOD_TYPE)별로 가장 인기 있는(좋아요가 가장 많은) 식당 정보를 가져오는 쿼리SELECT r.FOOD_TYPE, r.REST_ID, r.REST_NAME, r.FAVORITESFROM REST_INFO r-- 서브쿼리로 음식 유형별로 가장 많은 좋아요 수를 찾음JOIN ( -- 음식 유형별로 가장 많은 좋아요 수를 찾는 서..
-
[MySQL] 가격이 제일 비싼 식품의 정보 출력하기Algorithm/Programmers 2024. 10. 13. 15:27
문제https://school.programmers.co.kr/learn/courses/30/lessons/131115 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE -- 제품 ID, 이름, 코드, 카테고리, 가격을 선택FROM FOOD_PRODUCT -- FOOD_PRODUCT 테이블에서 데이터를 조회ORDER BY PRICE DESC -- 가격을 기준으로 내림차순으로 정렬 (가장 비싼 제품이 먼저 나옴)LIMIT 1 -- 가장..
-
[C++] 1753번 최단경로Algorithm/Baekjoon 2024. 10. 13. 14:25
문제https://www.acmicpc.net/problem/1753 코드#include #include #include using namespace std;// 다익스트라 알고리즘: 시작점 s에서 모든 노드까지의 최단 거리를 계산vector dijkstra(const int& s, const vector>>& graph) { // 우선순위 큐에서 가중치가 작은 순으로 처리하기 위한 비교 함수 (최소 힙) auto compare = [](const pair& a, const pair& b) { return a.second > b.second; }; priority_queue, vector>, decltype(compare)> pq(compare); // 최소 힙을 위한 우선순위 큐 vec..
-
[C++] 1629번 곱셈Algorithm/Baekjoon 2024. 10. 13. 13:22
문제https://www.acmicpc.net/problem/1629 코드#include using namespace std;// 거듭제곱을 분할정복 방식으로 계산하는 함수long long power(const long long& a, const long long& b, const long long& c) { if (b == 0) return 1; // b가 0이면 a^0 = 1이므로 1을 반환 // b를 절반으로 나누어 재귀적으로 계산 long long half = power(a, b / 2, c); half = (half * half) % c; // 모듈로 연산을 통해 계산된 값을 c로 나눈 나머지 // b가 홀수인 경우 a를 한 번 더 곱해주어야 함 if (b % 2 == 1) ha..
-
[MySQL] 조건에 맞는 사용자와 총 거래금액 조회하기Algorithm/Programmers 2024. 10. 11. 18:43
문제https://school.programmers.co.kr/learn/courses/30/lessons/164668 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이SELECT u.USER_ID, u.NICKNAME, SUM(b.PRICE) AS TOTAL_SALESFROM USED_GOODS_BOARD bJOIN USED_GOODS_USER u ON b.WRITER_ID = u.USER_IDWHERE b.STATUS = 'DONE'GROUP BY u.USER_IDHAVING SUM(b.PRICE) >= 700000ORDER BY TOTAL_..