목록분류 전체보기 (591)
어흥
문제 링크: https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 www.acmicpc.net 1. 주의할 점 - 다익스트라 문제지만, 2중 For문이 아닌 Heap형태의 우선순위 큐를 이용해야만 풀 수 있는 문제다. -..
문제 링크: https://www.acmicpc.net/problem/14238 14238번: 출근 기록 스타트링크에는 세명의 직원이 일을 하고 있다. 세 직원의 이름은 강호(A), 준규(B), 수빈(C) 이다. 이 회사의 직원은 특별한 룰을 가지고 있는데, 바로 하루에 한 명만 출근한다는 것이다. 3일간의 출근 기록이 "AAC"라는 것은 처음 이틀은 A가 출근했고, 셋째 날엔 C만 출근했다는 뜻이다. A는 매일 매일 출근할 수 있다. B는 출근한 다음날은 반드시 쉬어야 한다. C는 출근한 다음날과 다다음날을 반드시 쉬어야 한다. 따라서, 모든 출근 기록이 www.acmicpc.net 1. 주의할 점 - DFS로 시도할 경우, 3^50의 경우이며 몇 가지 추가조건을 건다고 해도 결과는 TLE - 메모라이..
문제 링크: https://codeforces.com/contest/1323/problem/C Problem - C - Codeforces codeforces.com 1. 구현 - 입력받은 문자열 중에서 '('의 개수와 ')'의 개수가 같지 않으면 -1 출력한다. -> 이걸 안해서 틀렸다. 다음부턴 조심하자 - 위에서 수한 개수가 같다면, '('와')'이 짝이 이뤄지지 않을 때 만큼 더한다. "))()(("같은 문자열도 처리가 되도록 변수를 2개 설정해서 구한다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); i..
문제 링크: https://codeforces.com/contest/1323/problem/B Problem - B - Codeforces codeforces.com 1. 구현 - K의 약수를 먼저 구한다 - A와 B의 배열에서 (연속된 1의 개수, 해당 값의 개수)를 Map에 저장한다 - A의 처음부터 끝까지 K의 약수보다 큰수가 존재하면 (A의 수 - K +1)* A의 개수 만큼 더한다 - B의 처음부터 끝까지 K/A의 약수보다 큰 수가 존재하면 (B의 수 -K/A +1) * B의 개수 만큼 더한다 - 위 2개를 곱하고, K의 약수개수만큼 반복한다 #include #include #include #include using namespace std; long long num; vector v; void..
문제 링크: https://codeforces.com/contest/1323/problem/A Problem - A - Codeforces codeforces.com 1. 구현 - 입력받은 배열의 개수가 1개이며 홀수라면 -1 출력 - 입력받은 배열에 짝수 값이 있으면 1과 함께 해당 짝수의 index 출력 - 입력받은 배열에 홀수가 2개 있다면 2와 함께 해당 홀수들의 index 출력 #include #include using namespace std; int arr[100]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int test; cin >> test; for (int t = 0; t < test; ..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 가로의 최대 길이가 12이며, 벽돌은 최대 4개이므로 DFS로 돌릴경우 최대 경우는 12^4로 충분히 가능하다 - 벽돌을 부술 경우, 백트레킹을 사용할 예정이므로 기존의 벽 상태를 저장해야한다. - 필요로 하는 기능들을 정확히 구현만 한다면 어렵지 않다. 2. 구현 - 부수는 경우 Queue를 사용한다. - 부순 후, 내리면 1회가 끝난며, 이 동작을 N번 하면 된다..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWsBQpPqMNMDFARG#none SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - N과 M의 최대가 50이여서 BFS를 돌려도 답이 나온다 - 악마가 퍼질 예정의 범위에도 수연이가 이동하지 못하도록 설정한다 2. 구현 - 2번의 주의할 점을 고려하여 "악마를 퍼트린다 -> 수연이가 이동한다"의 순서로 반복한다 import java.io.BufferedReader; import java.io.InputStreamReader; import j..
문제 링크: https://www.acmicpc.net/problem/17073 17073번: 나무 위의 빗물 첫째 줄에 트리의 노드의 수 N과 1번 노드에 고인 물의 양을 의미하는 정수 W가 주어진다. (2 ≤ N ≤ 500,000, 1 ≤ W ≤ 109) 다음 N-1줄에 걸쳐, 트리에 존재하는 간선의 정보가 U V의 형태로 주어진다. (1 ≤ U, V ≤ N, U ≠ V) 이는 양 끝 정점이 각각 U와 V인 간선이 트리에 존재한다는 의미이다. 입력으로 주어지는 트리는 항상 올바른 연결 트리임이 보장되며, 주어지는 트리의 루트는 항상 1번 정점이다. www.acmicpc.net 1. 주의할 점 - 출력값에 소숫점 이하수가 10개 있으므로 cout.precision(11)을 통해 출력 형태를 맞춰..