728x90
반응형
[C++ / 백준 1504번] 특정한 최단경로 - 다익스트라(Dijkstra)
·
Algorithm/BOJ
🔍 문제 요약문제 링크: 백준 1504번 - 특정한 최단 경로주요 태그: 그래프, 다익스트라, 최단 경로, 필수 경유지, 우선순위 큐1번 정점에서 N번 정점까지 이동하되,반드시 정점 v1, v2를 모두 거쳐야 한다.이때 가능한 최단 경로의 총 거리를 출력하라.단, 이동 중 정점·간선의 중복 사용은 가능하고,경로가 없다면 -1을 출력해야 한다.💡 문제 분석조건설명그래프양방향, 가중치 존재정점 수최대 800개간선 수최대 200,000개필수 조건v1, v2 반드시 포함목표1 → N으로 가는 최단 경로 (v1, v2 경유)🔑 아이디어✅ 가능한 경로는 단 두 가지1 → v1 → v2 → N1 → v2 → v1 → N→ 두 경우의 총 거리를 모두 계산하고 더 작은 값을 선택✅ 거리 계산을 위해 필요한 정보Di..
[C++/ 백준 11066번] 파일 합치기 - DP(다이나믹 프로그래밍), prefixsum(누적합)
·
Algorithm/BOJ
📚 [C++/ 백준 11066번] 파일 합치기 - DP(다이나믹 프로그래밍), prefixsum(누적합)🔍 문제 요약문제링크 : 백준 11066번주요 태그: DP 다이나믹프로그래밍, prefixsum 누적합 소설을 여러 장으로 나누어 작성하며, 각 장은 서로 다른 파일로 저장된다. 이 파일들을 하나로 합치기 위해 두 개씩 계속 합치기를 반복한다.이때 두 파일을 합치는 데 드는 비용은 두 파일의 크기의 합이다.파일의 순서를 바꿀 수는 없으며, 모든 파일을 하나로 합치기 위한 최소 비용을 구해보자.💡 문제 분석입력:테스트케이스 수 T각 테스트케이스마다 K (파일 개수), 그리고 각 파일의 크기 (정수 K개)출력:각 테스트케이스마다 모든 파일을 하나로 합치기 위한 최소 비용제한 조건:3 ≤ K ≤ 500..
[C++ / 백준 13565번] 침투 - BFS , 그래프 탐색
·
Algorithm/BOJ
[C++ / 백준 13565번] 침투 - BFS , 그래프 탐색🔍 문제 요약문제 링크: 백준 13565번주요 태그: 그래프 탐색, BFS, DFS, 2차원 배열, 전파 확산문제 설명:2차원 격자로 표현된 섬유 물질이 주어진다.흰색(0)은 전류가 통할 수 있는 칸, 검은색(1)은 전류를 차단하는 칸이다.전류는 위쪽(0행) 흰색 칸에서 흘려지고, 상하좌우로 인접한 흰색 칸을 통해 이동할 수 있다.전류가 아래쪽(m-1행)까지 도달할 수 있는 경우 "YES", 그렇지 않으면 "NO"를 출력한다.💡 문제 분석입력 크기 최대 1000×1000 → O(N²)보다 빠른 알고리즘 필요0행의 모든 흰 칸에서 동시에 BFS 시작전류가 아래쪽까지 도달할 수 있는지 여부만 판단하면 됨visited 배열을 매번 초기화할 필요..
[SQL] Programmsers 131123번 즐겨찾기가 가장 많은 식당 정보 출력하기
·
SQL
[SQL] Programmsers 131123번 즐겨찾기가 가장 많은 식당 정보 출력하기 🍽️ 🔍 문제 요약[프로그래머스 - 즐겨찾기가 가장 많은 식당 정보 출력하기]REST_INFO 테이블에서음식종류(FOOD_TYPE)별로 **즐겨찾기 수(FAVORITES)**가 가장 많은 식당의 정보를 출력하라.출력 컬럼은 음식 종류, 식당 ID, 식당 이름, 즐겨찾기 수이며, 결과는 음식 종류 내림차순으로 정렬되어야 한다.💡 문제 분석GROUP BY + MAX()를 활용하여 음식 종류별로 즐겨찾기 수가 가장 큰 값을 구하는 것이 핵심이다.하지만 MAX(FAVORITES)만 가져오면 식당 이름이나 ID 등 다른 컬럼을 함께 출력할 수 없다.따라서 이를 해결하기 위해선 튜플 비교 방식 또는 ROW_NUMBER(..
[SQL] Programmsers 151139번 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
·
SQL
[SQL] Programmsers 151139 여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 🔍 문제 요약테이블: CAR_RENTAL_COMPANY_RENTAL_HISTORY기간: 2022년 8월 ~ 10월조건: 이 기간 동안 대여 횟수 5회 이상인 CAR_ID출력: 월(MONTH), 자동차 ID(CAR_ID), 대여 횟수(RECORDS)정렬: 월 오름차순, 같은 월 내에서는 자동차 ID 내림차순기준 날짜: START_DATE💡 문제 분석 및 설계 전략서브쿼리로 조건을 만족하는 CAR_ID 선별2022-08-01 ~ 2022-10-31 범위 내에서 대여 이력이 5건 이상인 CAR_ID만 추출GROUP BY CAR_ID + HAVING COUNT(*) >= 5본 쿼리에서는 선별된 CAR_ID만 사용..
[SQL] WHERE절 기본 문법 & 사용법
·
SQL
✅ 1. WHERE 절의 기본 문법SELECT ...FROM ...WHERE 조건1 AND 조건2 AND 조건3WHERE는 행 단위의 조건 필터링을 수행하는 절입니다.AND, OR 연산자를 통해 여러 조건을 조합할 수 있습니다.순차적으로 평가되며, 모두 참(TRUE)인 경우에만 해당 행이 선택됩니다.✅ 2. IN과 AND를 함께 사용하는 구조WHERE 컬럼명 IN (서브쿼리 또는 리스트) AND 다른조건예시:SELECT *FROM PRODUCTSWHERE CATEGORY_ID IN (SELECT CATEGORY_ID FROM POPULAR_CATEGORIES) AND PRICE BETWEEN 1000 AND 5000;CATEGORY_ID IN (...) → 특정 카테고리에 속하는 데이터만AND P..
[ C++ / 백준 1806번] 부분합 (슬라이딩 윈도우 / 투 포인터)
·
Algorithm/BOJ
[ c++ / 백준 1806번] 부분합 (슬라이딩 윈도우 / 투 포인터)🔎 문제 요약문제 링크: 백준 1806번 - 부분합알고리즘 분류: 슬라이딩 윈도우 / 투 포인터난이도: 골드II문제설명: 길이 N짜리 수열이 주어졌을 때, 연속된 수들의 부분합 중 합이 S 이상이 되는 가장 짧은 길이를 구하는 문제수열은 10,000 이하의 자연수로 구성되어 있으며,그러한 합을 만드는 것이 불가능하다면 0을 출력한다. 💡 문제 분석수열은 자연수로만 이루어져 있음 → 포인터를 옮길 때 합이 증가 또는 감소 방향이 명확함수열의 원소가 최대 100,000개이므로 O(N²) 불가누적합을 활용한 브루트포스보단, 슬라이딩 윈도우/투 포인터로 O(N) 해결 가능🔑 아이디어start와 end 포인터를 이용해 구간을 확장하거..
[Algorithm] 그래프 최단 경로 알고리즘 - 다익스트라(Dijkstra)
·
Algorithm
✅ 핵심 개념 정리항목내용알고리즘 이름다익스트라 (Dijkstra)목적단일 출발점에서 다른 모든 정점까지의 최단 거리 계산조건간선의 가중치는 0 이상 (음수 X)시간복잡도O((V + E) log V) (우선순위 큐 사용 시)사용 구조Greedy (탐욕법) + Priority Queue (최소힙) ❗️다익스트라(Dijkstra) 알고리즘은 그래프에서 하나의 정점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘가중치가 음수가 아닌 그래프에서만 동작💡 동작 원리문제 상황 예시:지도 위에 여러 도시가 있고, 도시 간 거리(비용)가 주어진다.당신은 출발 도시에서 다른 도시로 최단 거리로 가고 싶다.✅ 다익스트라 알고리즘 절차 (요약)거리 배열 초기화출발점: 0나머지: INF (도달 불가로 초기화)우선순위 큐..
728x90
반응형