본문 바로가기

자료구조 알고리즘(C++)27

[C++]백준(BOJ) - 11657 타임머신(벨만-포드) 난이도 : 골III알고리즘 유형 : 벨만-포드 알고리즘풀이 방법 : n - 1(간선 최단 경로), edge 순회 문제 예시입력N개의 도시와 M개의 버스 노선 정보가 주어집니다.각 버스는 출발 도시, 도착 도시, 그리고 소요 시간이 주어집니다.시간 C가 음수일 경우에는 타임머신처럼 시간을 되돌리는 효과가 있으므로, 이로 인한 무한 루프를 감지해야 합니다.출력1번 도시에서 출발하여 나머지 도시로 가는 최단 시간을 출력합니다.만약, 1번 도시에서 출발하여 특정 도시로 가는 경로가 없다면 -1을 출력하고, 경로를 통해 무한히 되돌아갈 수 있다면 -1을 출력합니다. 문제 설명아주 전형적인 최단 경로를 찾고, 음수의 사이클을 감지해 예외처리 해주는 벨만-포드 알고리즘입니다.벨만-포드 알고리즘은 최단 경로 문제를 풀.. 2024. 11. 25.
[C++]프로그래머스 - 이모티콘 할인행사(조합) 난이도 : Lv2 (중)풀이 시간 : 35분알고리즘 유형 : 조합, DFS풀이 방법 : 가능한 경우 탐색 후 조합  문제 설명카카오톡은 이모티콘 플러스 서비스 가입자를 늘리기 위해 할인 행사를 진행합니다.목표는 이모티콘 플러스 서비스 가입자 수를 최대화하고, 그 다음으로 이모티콘 판매액을 늘리는 것입니다. n명의 사용자에게 m개의 이모티콘을 할인해서 판매한다.이모티콘마다 할인율은 10%, 20%, 30%, 40% 중 하나이다.사용자는 자신이 설정한 할인율 이상으로 할인이 되는 이모티콘을 구매하고, 구매 금액이 설정 금액 이상이면 플러스 서비스에 가입한다.예시사용자할인율한도1번40%10,000원2번25%10,000원이모티콘가격1번7,000원2번9,000원이모티콘을 40% 할인하면, 두 사용자는 모두 이모티.. 2024. 11. 24.
[C++]백준(BOJ) 1446 - 지름길(DP) 난이도 : 실I풀이 시간 : 40분알고리즘 유형 : DP, 다익스트라풀이 방법 : d만큼 순회 해서 최솟값 저장(DP)  문제 예시 🚗💨이 문제는 매일 아침 고속도로를 지나 학교에 가는 세준이가, 고속도로에 존재하는 지름길을 이용해 최단 거리로 목적지에 도달하는 방법을 찾는 문제입니다. 문제를 해결한 방식: 동적 계획법 (DP) 💡이 문제에서는 동적 계획법을 사용하여 각 위치까지의 최단 거리를 계산합니다. DP 방식으로 문제를 푼 이유:동적 계획법을 사용하면, 각 위치까지의 최단 거리를 구할 때 이전 값들만 사용하여 효율적으로 갱신할 수 있습니다. 고속도로를 따라 1km씩 주행하면서 거리를 갱신하고, 지름길을 고려할 때도 그 값을 갱신하는 방식이 DP의 핵심입니다.시간제한은 2초이며, N은 12 이.. 2024. 11. 23.
[C++]백준(BOJ) 2169 - 로봇 조종하기(DP) 난이도 : 골II풀이 시간 : 50분알고리즘 유형 : DP풀이 방법 : Left, Right, Up 비교 후 최대값 확인    문제 링크https://www.acmicpc.net/problem/2169     📋 문제 설명NASA의 화성 탐사 로봇이 N×M 크기의 지형에서 가장 탐사 가치가 높은 경로를 찾아야 합니다. 로봇은 다음 규칙에 따라 움직입니다:움직일 수 있는 방향:    ★  왼쪽, 오른쪽, 아래쪽으로 이동할 수 있습니다.    ★  위로는 이동할 수 없습니다.탐사 가치:    ★  각 칸에는 정수로 탐사 가치가 주어지며, 한 번 방문한 칸은 다시 방문하지 않습니다.목표:    ★   좌측 상단 (1, 1)에서 시작해 우측 하단 (N, M)으로 이동하며, 탐사 가치의 합을 최대화합니다.   .. 2024. 11. 21.
[C++]백준(BOJ) 2473 - 저울 (그리디) 난이도 : 골II풀이 시간 : 40분알고리즘 유형 : 그리디, 정렬풀이 방법 : 오름차순의 합을 구한 뒤 비교   문제 예시무게가 양의 정수인 N개의 저울추가 주어질 때, 이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값을 구하는 프로그램을 작성하시오.예를 들어, 무게가 각각 3, 1, 6, 2, 7, 30, 1인 7개의 저울추가 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21이다. 입력첫 째 줄에는 저울추의 개수를 나타내는 양의 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 둘째 줄에는 저울추의 무게를 나타내는 N개의 양의 정수가 빈칸을 사이에 두고 주어진다. 각 추의 무게는 1이상 1,000,000 이하이다.출력첫째 줄에 주어진 추들로 측정할 수 없는.. 2024. 11. 20.
[C++]백준(BOJ) 15686 - 치킨 배달 (백트래킹, 순열) 난이도 : 골V풀이 시간 : 40분알고리즘 유형 : 백트래킹, 조합(Comb)풀이 방법 : (백트래킹, 조합) 을 이용한 최소 거리 합 계산  문제 링크https://www.acmicpc.net/problem/15686  문제 예시 주어진 N×N 크기의 도시에서, 각 칸은 빈 칸(0), 집(1), 치킨집(2)으로 구분됩니다. 각 집은 가장 가까운 치킨집과의 거리를 계산해 "치킨 거리"를 가집니다. 도시의 "치킨 거리"는 모든 집의 치킨 거리 합입니다. (2, 1)에 있는 집과 (1, 2)에 있는 치킨집과의 거리는 |2-1| + |1-2| = 2, (5, 5)에 있는 치킨집과의 거리는 |2-5| + |1-5| = 7이다. 따라서, (2, 1)에 있는 집의 치킨 거리는 2이다. (5, 4)에 있는 집과 (1.. 2024. 11. 19.