목록코딩테스트/백준 (46)
Deff_Dev
문제 https://www.acmicpc.net/problem/1461풀이이 문제는 그리디 문제로, 절댓값이 가장 큰 책을 마지막에 갖다놓는(0으로 안돌와도 됨) 방법으로 풀이했다. 음수, 양수 값을 나눠서 벡터에 저장(음수는 양수로 변환하여 저장)하고, 절댓값이 가장 큰 값을 저장한다.각 벡터를 내림차순 정렬한다.idx 번째 값의 * 2 한 값을 sum에 더하고 idx + m하는 과정을 벡터의 크기 만큼 반복한다.이때, 가장 큰 값이 존재하는 벡터일 경우, 왕복 값이 아닌 편도 값을 먼저 더한 뒤, 3번 과정을 반복한다.#include#include#include// https://www.acmicpc.net/problem/1461using namespace std;vector plusVec;vec..
문제 https://www.acmicpc.net/problem/1058풀이직접적인 친구를 먼저 찾고 해당 친구의 겹지인을 탐색하는 방법으로 풀이했다. #include// https://www.acmicpc.net/problem/1058using namespace std;bool isFriend[51][51] = { false, };bool isCheck[51][51] = { false, };int main() { int n; cin >> n; char input; for (int i = 1; i > input; if (input == 'Y') { isFriend[i][j] = true; } } } int maxCount = -1; for (int i = 1; i
문제 https://www.acmicpc.net/problem/11724풀이BFS를 이용해 모든 노드를 탐색하고 연결 요소의 개수를 구하는 방법으로 풀이했다.#include#include#include// https://www.acmicpc.net/problem/11724using namespace std;int N, M;vector vec[1001];bool visited[1001] = { false, };void BFS(int startPos) { queue q; q.push(startPos); visited[startPos] = true; while (!q.empty()) { int target = q.front(); q.pop(); for (int i = 0; i > N >> M; int s..
문제 https://www.acmicpc.net/problem/1916풀이이 문제는 시작 지점에서 도착지점까지의 최소비용 구하는 문제로, 다익스트라, 우선순위 큐를 이용하여 풀이했다. 우선순위 큐는 가중치가 낮은 노드 먼저 탐색(그리디)하여 최소 거리를 효율적으로 찾기 위해 사용했다. #include#include#include// https://www.acmicpc.net/problem/1916#define INF 1e9using namespace std;int N, M, startPos, endPos;vector > vec[1001];void Dijk() { vector dist(N + 1, INF); priority_queue, vector>, greater>> pq; dist[startPos] ..
문제 https://www.acmicpc.net/problem/15654풀이next_permutation() 을 이용하여 조합을 구하고 해당 조합에서 순열을 구한 값들을 저장하고 오름차순으로 정렬한 후, 출력하는 방법으로 풀이했다.#include#include #include // https://www.acmicpc.net/problem/15654using namespace std;int main() { int n, m, sel; cin >> n >> m; vector vec (n); vector combination (n, true); vector> answer; for (int i = 0; i > vec[i]; } for (int i = 0; i combinationValues; for (in..
문제 https://www.acmicpc.net/problem/11723풀이이 문제는 명령어를 입력받고 명령에 맞는 연산을 수행하는 프로그램을 만드는 문제이다. map을 이용하여 명령에 맞는 연산을 하는 방식으로 풀이했다.#include#include#include// https://www.acmicpc.net/problem/11723using namespace std;map s;int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, sel; string str; cin >> n; for (int i = 0; i > str; if (str == "all" || str == "empty") { if (str == "all") { for (..
문제 https://www.acmicpc.net/problem/15686풀이조합을 이용하여 모든 경우의 수의 최소 거리 값을 구하는 방법으로 풀이했다.#include#include#include// https://www.acmicpc.net/problem/15686using namespace std;vector > chicken, house;int main() { int n, m, result = 0; cin >> n >> m; int sel; for (int i = 1; i > sel; if (sel == 1) house.push_back({ i,j }); else if (sel == 2) chicken.push_back({ i,j }); } } vector combination(..
문제 https://www.acmicpc.net/problem/15988풀이#include// https://www.acmicpc.net/problem/15988using namespace std;long long nums[1000001];int main() { int n, input; cin >> n; for (int i = 0; i > input; nums[1] = 1; nums[2] = 2; nums[3] = 4; for (int j = 4; j