쾌락없는 책임 (공부)/알고리즘 문제풀이
-
백준 1461 도서관 - C++, 그리디 알고리즘, 정렬쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 7. 21. 21:35
1461번: 도서관 첫째 줄에 책의 개수 N과, 세준이가 한 번에 들 수 있는 책의 개수 M이 주어진다. 둘째 줄에는 책의 위치가 주어진다. N은 10,000보다 작거나 같은 자연수이고, M은 10,000보다 작거나 같다. 책의 위치 www.acmicpc.net #include #include using namespace std; int book[10001]; int main(){ int n, m, count = 0; int answer = 0; cin >> n >> m; for(int i = 0; i > book[i]; if(book[i] < 0) count++; } sort(book, book + n); // 다 이동을 한 후 제일 먼 거리를 마지막에 간걸로 처리하면 된다..
-
백준 1197 최소 스패닝 트리 - C++, 크루스칼 알고리즘쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 7. 4. 16:16
1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net #include #include #include using namespace std; int v, e, res = 0, edgenum = 0; pair edge[100001]; int parents[10001]; int FindRoot(int x){ if(x == parents[x]) return x; return parents[x] = FindRoot(parents[x]); } void Merge(int x, in..
-
백준 1717 집합의 표현 - C++, Union find쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 6. 29. 10:16
1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net #include using namespace std; int parent[1000001]; int FindParent(int x){ if(x == parent[x]) return x; return parent[x] = FindParent(parent[x]); } void Merge(int x, int y){ x = FindParent(x); y = FindParent(y); if(x == y) return; else pa..
-
백준 2660 회장뽑기 - C++, 플로이드-와샬쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 6. 26. 21:57
2660번: 회장뽑기 입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터 www.acmicpc.net #include #include #include using namespace std; int n, score, num, minnium; int vote[51][51]; int result[51]; int main(){ scanf("%d", &n); for(int i = 0; i
-
백준 3649 로봇 프로젝트 - C++, 두 포인터, 예외 찾기쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 6. 26. 16:25
3649번: 로봇 프로젝트 각 테스트 케이스마다 한 줄에 하나씩, 구멍을 완벽하게 막을 수 있는 두 조각이 없다면 'danger'를 출력한다. 막을 수 있는 경우에는 'yes ℓ1 ℓ2'를 출력한다. (ℓ1 ≤ ℓ2) 정답이 여러 개인 경우에 www.acmicpc.net #include #include using namespace std; // 1cm = 10000000 um // 구멍의 너비, 레고 조각수, 레고 조각의 길이 int x, n, l; int lego[1000001]; int main(){ ios::sync_with_stdio(false); cin.tie(); cout.tie(); while(cin >> x >> n){ // input for(int i = 0; i < n; i++) cin..
-
백준 14442 벽 부수고 이동하기 2 - C++, BFS쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 6. 24. 21:09
14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net #include #include #include using namespace std; int n, m, k; int goX[4] = { 0, 0, 1, -1 }; int goY[4] = { 1, -1, 0, 0 }; int map[1001][1001]; int cost[1001][1001][11]; int BFS(){ queue q; q.push(make_pair(make_pair(0, 0), 0)); cost[0][0][0] ..
-
백준 2473 세 용액 - C++, 두 포인터쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 6. 24. 19:45
2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net #include #include using namespace std; int n; long long res = 3000000001; int first, second, third; long long arr[5001]; void search(){ for(int i = 0; i < n; i++){ int l = i + 1; int r = n - 1; while(l < r){ long long sum = arr[i] + arr[l] + arr[r]..
-
백준 2206 벽 부수고 이동하기 - C++, BFS쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 6. 23. 21:22
2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net #include #include #include using namespace std; int n, m; int goX[4] = { 0, 0, 1, -1 }; int goY[4] = { 1, -1, 0, 0 }; int map[1001][1001]; int arr[1001][1001][2]; int BFS(){ queue q; q.push(make_pair(make_pair(0, 0), 1)); arr[0][0][1] = 1; while(..