차곡차곡 성 쌓기
article thumbnail
[백준] 최단 경로 : 1753 : Java - 다익스트라(Dijkstra)
알고리즘/백준 2023. 12. 28. 02:18

1. 문제 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net - 주어진 한 정점 부터 각 모든 정점 최소 경로 구하기 2. 해결 포인트 이 문제는 주어진 노드의 제한이 크기 때문에 정점마다 탐색을 진행할 수 없다. 최소 경로 문제에 쓰이는 알고리즘이 필요하다. 한 노드에서 각 모든 노드까지 가는 최단 경로를 구할 수 있는 다익스트라 알고리즘을 쓴다. 다익스트라(Dijkstra) 알고리즘 한 노드에서 각 모든 노드까지 가는 최단 경로를 구하는 알고리즘. 음의 간선을 포함할 수..

article thumbnail
[백준] 9934 완전 이진트리: Java - S1
알고리즘/백준 2023. 12. 26. 20:47

9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net 1. 알고리즘 완전 이진 트리 2. 해결책 중위 순회의 중심이 루트인 것을 이용 3. 접근한 방법 해야될 일 : 중심 순회 결과로 트리 구성하라 중위 순위 결과를 가지고 알아낼 수 있는것이 뭐지? DFS 탐색과 결과가 같다. 하지만 루트는 어떻게 알아내고, 트리관계는 어떻게 알아내지? -> 불가능 인덱스를 이용할까. 이 문제는 완전 이진 트리. 자식 노드는 부모 인덱스 i의 2_i, 2_i+1이다. 부모 인덱스는 어떻게 구하지? 이 문제..

article thumbnail
[백준] 연구소 : 14502 : Java - 그래프 탐색 (G4)
알고리즘/백준 2023. 12. 14. 21:57

1. 📄 문제 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net - 반드시 3개의 벽을 세워서 확보할 수 있는 안전 구역의 최댓값을 구하기 2. 🤔 어떻게 풀까? 문제를 처음 봤을 때 대체 어떠한 방법으로 벽을 세울 위치를 정해야될지 난감했다. 바이러스를 중심으로 한다해도 어렵고, 벽을 중심으로 해도 어렵고.. 모르겠다가 넉넉한 시간과 작은 N과 M의 개수를 보고 완전 탐색을 생각했다. 그후 과연 시간 조건을 충족할 수 있을지 계산을 해보았고 아주 넉넉했다. 그래서 벽을 세울 수 있는 모든 경우의 수로 벽을 세우고, BFS ..

article thumbnail
[백준] 꿀 따기 : 21758 : JAVA
알고리즘/백준 2023. 12. 9. 00:50

1. 🍅 문제 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 2. 🤔 어떻게 풀까? 구해야 되는 것 : 얻을 수 있는 최대 꿀의 양 조건 : 벌 2마리가 지나가면 꿀을 채취할 수 있음, 단 벌이 시작한 위치에서는 어느 벌이든 채취하지 못함 조건 속에서 최대 꿀의 양을 구하기 위해 가능한 루트를 생각했다. 생각할 수 있는 루트는 3가지이다. 1. 벌 2마리가 같이 왼쪽에서 오른쪽으로 전진 2. 벌 2마리가 같이 오른쪽에서 왼쪽으로 전진 3. 벌 2마리가 양 끝에서 전진 이 3가지의 상황을 모두 따져가면서 해보면 최대 꿀의 양을 찾을 있지 않을까? ..하지만 경우의 수를 다 해보면 시간 초과가 날 것 같아서 더 좋은 방법이 없을까 고민하였다. 결국 찾을..

article thumbnail
[백준] 랜선 자르기 : 1654 : Java - 이분탐색 (S2)
알고리즘/백준 2023. 12. 3. 21:55

1. 🍅 문제 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 2. 🤔 어떻게 풀까? 이 문제는 이분탐색의 바이블같은 문제이다. 이분탐색 막 처음 배울 때 이 문제를 여러 번 봤었다. 나한텐 DP의 계단 오르기 문제와 같은 느낌이다. 아무튼! 어떻게 풀지 고민을 해보자. 문제를 요약하면 구해야 되는 것은 '주어진 K개의 랜선을 잘라 같은 길이의 n개 이상의 랜선을 만들 때 자를 수 있는 랜선의 최대 길이는?'이다. 결국 임의로 랜선의 길이를 설정하여 K개의 랜선들을 모두 잘라보는 ..

article thumbnail
[백준] 쉬운 계단 수 : 10844 : Java - DP (S1)
알고리즘/백준 2023. 12. 3. 00:26

1. 문제 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 길이가 N인 계단 수가 몇 개? 계단 수란 인접한 모든 자리의 차이가 1인 수를 말한다. 1

article thumbnail
[백준] 파일 합치기3 : 13975 : Java - 그리디 (G4)
알고리즘/백준 2023. 12. 2. 19:39

1. 💎 문제 13975번: 파일 합치기 3 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T개의 테스트 데이터로 이루어져 있는데, T는 입력의 맨 첫 줄에 주어진다.각 테스트 데이터는 두 개의 행으로 주어지는데, www.acmicpc.net 모든 장을 합쳤을 때 최소 비용을 구한다 2개를 선택해서 더한다. 2. 🤔 어떻게 풀까 최소의 비용을 얻을 수 있는 방법은? 예제를 통해 어떤 경우에 최소가 될 수 있는지 분석했다. 알아낸 점은 일찍 선택할 수록 더 많은 횟수를 더하게 된다는 점이었다. 이 문제는 합쳐진 것도 계속 더해가면서 누적을 해야되기 때문이다. 그래서 최대한 작은 수대로 먼저 2개씩 더해야겠다고 생각했다. 생각을 적용해서 다시 예제를 풀어보니 개별 파일 중에서 가장 작은 ..

article thumbnail
[백준] 점프 : 1890 : Java - DP (S1)
알고리즘/백준 2023. 11. 29. 17:51

1. 💎 문제 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 2. 🤔 어떻게 풀까 현재 위치에서 이동할 수 있는 경우의 수는 2가지 뿐이다. 오른쪽 또는 아래로 현재 칸에 적혀있는 수만큼 이동하는 것이다. 그러므로 위치마다 2가지 경우를 고려하여 경우의 수를 누적한다. 코드가 짧아 바로 전체 코드로 간다. 3. 🖥️ 전체 코드 행렬의 순서대로 요소를 탐색한다. 현재 칸에 적혀있는 수만큼 오른쪽, 아래로 이동하여 이동한 위치의 경우의 수를 증가시킨다. int length = (int)map[i][j..

article thumbnail
[백준] 배 : 1092 : Java - 그리디 (G5)
알고리즘/백준 2023. 11. 29. 00:28

1. 💎 문제 2. 🤔 어떻게 풀까 N개의 크레인 -> 동시에 이용 가능 각 크레인에는 실을 수 없는 무게 제한이 있음(포함) 이 두가지 조건을 중심으로 생각했다. 최소의 시간이 걸리기 위해서는 크레인들에게 균형있게 화물을 분배해줘야 한다. 이때 무게가 작은 박스는 어떠한 크레인이든 사용할 수 있지만, 무게가 커질 수록 사용할 수 있는 크레인은 적다. 그러므로 무게가 무거운 박스를 어떻게 분배하면 좋을지 생각했다. 해답은 무거운 박스부터 적절한 크레인을 선택하여 싣게하는 것이다. 적절한 크레인을 어떻게 고르냐 생각했을 때, 그 순간 무게 제한이 박스의 무게를 포함하면서, 이동시켜야할 박스의 수가 제일 적은 것을 선택하기로 했다. 결국 중요한 것을 균형있는 분배이다. 그러므로 제일 작업량이 작은 크레인을 ..

article thumbnail
[백준] DSLR : 9019 : Java - BFS, 최단 거리 (G4)
알고리즘/백준 2023. 11. 27. 14:43

1. 💎 문제 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 4개의 명령으로 A에서 B를 만들 수 있는 최소한의 명령어의 나열을 구한다. 나열이 여러가지면, 아무거나 출력한다. D : D 는 n을 두 배로 바꾼다. 결과 값이 9999 보다 큰 경우에는 10000 으로 나눈 나머지를 취한다. S: S 는 n에서 1 을 뺀 결과 n-1을 레지스터에 저장한다. n이 0 이라면 9999 가 대신 레지스터에 저장된다. L: L 은 n의 각 자릿수를 왼편으로 회전시켜 그 결과를 레지스터에 저장한다. 이 연..

728x90