목록Study/Algorithm (400)
hwooo
https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 풀이 도착지에서 Dijkstra를 돌려 각자 집으로 돌아가는 거리를 먼저 계산 후, 각 출발지에서 도착지까지의 최단 거리를 구해 왕복 거리를 계산함. 코드 #include #include #include #include using namespace std; vector V[1001]; int Distance[1001]; void Dijkstra(int start, i..
https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 코드 #include #include #include #include #include using namespace std; vector C[1001]; priority_queue pq; int W[20001]; void Dijkstra(int s) { int now, next, weight; pq.push({ 0,s }); W[s] = 0; while (!pq.e..
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 풀이 다익스트라 알고리즘 사용, 현재 노드와 가까운 노드들을 탐색하며 가중치가 적은 간선부터 큐에 저장해서 최단 경로 구함. 코드 #include #include #include #include #include using namespace std; vector R[20001]; priority_queue Q; int W[20001]; void Dijkstra(..
https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 코드 #include #include using namespace std; queue Q; void P(int N, int K) { int cnt = 0, tmp; printf(""); } int main() { int N, K; scanf("%d %d", &N, &K); for (int i = 1; i
https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 코드 #include #include #include #include #include using namespace std; vector V; int main() { int N, i, cnt = 1; string S; bool flag = false; scanf("%d", &N); for (int i = 0; i > S; V.push_back(S.substr(0, 1)); }..
https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 코드 #include char S[6570][6570]; void Print_Blank(int a, int b, int N) { for (int i = a; i 3) { for (..
https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 풀이 해당 배열의 크기는 최대일 경우 32768*32768으로 대략 계산해봐도 메모리 초과가 발생함. 이 문제의 경우 배열 내부의 값은 사용하지 않으므로 배열 선언은 필요 없음. r,c의 좌표가 탐색하려는 범위 내에 없는 경우 재귀함수를 실행시키지 않고 해당 범위를 다 탐색했을 때의 방문 횟수를 저장해줌. 원하는 값을 찾았을 경우 print= true; 로 선언해주어 사분할하는 재귀함수가..
https://www.acmicpc.net/problem/2630 풀이 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 위 문제와 동일함 코드 #include int A[130][130]; int n0 = 0, n1 = 0; void D(int a, int b, int N) { int i, j, num; num = A[a][b]; for (i = a; i < a + N; i++) { for (j = b; j < b + N; j++) ..