[C++] 백준 1922 - 네트워크 연결 [Gold4]
·
Baekjoon
출처https://www.acmicpc.net/problem/1922풀이 전략문제에서 Minimum Spanning Tree 알고리즘을 사용하라고 힌트를 줬기 때문에 Prim 알고리즘이나 Kruskal 알고리즘을 사용하여 풀이를 할 것이다.Prim보다는 Kruskal이 구현이 약간?은 더 간단할 것 같아서 Kruskal 알고리즘으로 풀었다.Pseudo Code풀이수도 코드에서 보면 알겠지만, Kruskal Algorithm의 특징은 Union-Find를 사용한다는 점과 edge를 weight가 작은 순으로 정렬해서 최솟값을 찾는다는 점이다. 그렇기 때문에 위의 그림과 같은 순서가 나온다.다만, 5번째의 경우 weight가 8인 edge가 4-6과 5-6 둘 다 가능한데, 문제 힌트에서 4-6이라고 주어져..
[C++] 백준 5095 - Matrix Powers [Gold4]
·
Baekjoon
출처https://www.acmicpc.net/problem/5095문제가 영어로 되어 있어서 당황할 수는 있지만, 단순히 문제에서 주어진 예시만 보더라도 알 수 있듯이, N,M,P를 입력 받아서 NxN 행렬을 만든 뒤 각각의 성분을 M으로 나눈 나머지를 P번 제곱하면 된다.다만, 주의할 점은 출력 형식이다. 예제가 1개밖에 없어서 0 0 0을 입력해서 프로그램을 종료시키는 것이라고 생각해서 0 0 0을 새로운 변수로 선언해 입력값을 주었지만, 그것이 아니라 0 0 0도 N,M,P이고 N,M,P가 모두 0이 입력될 때까지 무한 반복으로 Testcase를 입력 받아서 행렬 제곱 연산을 수행하는 것이였다. 또한 각 Testcase마다 한 줄씩 띄워져 있어야한다.이 부분 때문에 3번이나 출력 형식 오류가 났었..
[C++] 백준 1504 - 특정한 최단 경로 [Gold4]
·
카테고리 없음
출처https://www.acmicpc.net/problem/1504풀이 전략Dijkstra 알고리즘을 이용하여 최단경로를 구할 것이다. 다만, 이 문제의 경우 마지막에 입력 받는 v1과 v2를 무조건적으로 거친 경로 중 최단 경로를 찾는 것이기 때문에 세 가지 경우로 나누어서 구할 것이다.from 1번 (시작 정점) to v1from v1 to v2from v2 to N번 (도착 정점)세 가지의 경우로 나눈 최단 경로를 모두 더해주면 정답이 구해질 것이라고 생각하고 문제를 접근했다풀이문제의 예시를 그림으로 그려보면 위의 그림과 같다. 첫번째 예시를 보면 2-3을 지나는 최단경로를 찾으면 1-2-3-4로 총 합은 7이 된다. 이 경우, 모든 vertex가 연결되어 있기 때문에 인접노드행렬을 그려보면 IN..
[C++] 백준 2636 - 치즈 [Gold4]
·
Baekjoon
출처https://www.acmicpc.net/problem/2636풀이 전략먼저 문제 해석을 해보면, 1로 입력 받은 치즈가 시간이 지날 수록 녹아 내리는데, 녹아 내리는 부분을 보면 공기(0)과 맞닿아 있는 부분이라는 것을 알 수 있다. 그렇기 때문에 먼저 BFS로 0인 부분을 탐색해서 방문처리를 한 다음, 4방향 탐색을 이용하여 0 다음 노드가 1인 부분을 찾아서 그 부분을 cheese라고 처리를 한 뒤 0으로 바꿔서 그 다음 탐색에서는 그 부분이 공기라고 인식할 수 있도록 바꾸는 전략을 이용하였다.풀이소스 코드/*# Question: BJ 2636 (https://www.acmicpc.net/problem/2636)# Rank : Gold4# Algorithm : Graph, BFS, Simula..
[Python] 백준 2583 - 영역 구하기 [Silver1]
·
Baekjoon
출처https://www.acmicpc.net/problem/2583풀이 전략이 문제는 BFS로 풀면 되지만, 한 가지 까다로운 점은 Array의 index로 접근을 할 수 있지만 Array의 index는 좌상단에서 우하단 방향으로 커지는 반면 XY좌표계는 좌하단에서 우상단으로 커지기 때문에 Array로 계산을 할 때 XY 좌표계로 변환을 해주고 구해야 한다.이 점을 제외하면 무난무난한 문제이기 때문에 구하면 된다.풀이위의 풀이에 대해 설명을 하자면,빨간 형광펜으로 칠한 부분이 문제에서 예시로 주어진 부분이고, 빨간 점이 입력 값의 좌표(XY 좌표계), 배열 내부에 파란 색으로 적은 숫자가 배열의 index이다.빨간 점(X,Y)과 배열의 index를 비교해서 관계식을 찾는 것이 첫 번째 목표이다.따라서 ..
[C++] 백준 25206 - 너의 평점은 [Silver5]
·
카테고리 없음
출처https://www.acmicpc.net/problem/25206접근 방식등급에 학점이 대응되고 있으므로, Map STL을 사용하여 등급과 학점을 연관시키려고 했다.입력값의 경우, 과목명, 성적, 학점이 연관되어 있으므로 vector STL을 사용하는데 tuple을 사용하여 pair 처럼 묶어 주었다.GPA를 구하는 방식은 성적 * 학점 / 전체 학점으로 구하였다.소스 코드#include #include #include #include using namespace std;namespace SCORE{ const map points{ {"A+",4.5},{"A0",4.0},{"B+",3.5},{"B0",3.0},{"C+",2.5}, {"C0",2.0},{"D+",1.5}..