차곡차곡 성 쌓기
article thumbnail
[백준] ACM Craft : 1005 : Java - 위상정렬
알고리즘/백준 2024. 2. 5. 20:06

문제 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 핵심 풀이 이 문제는 건설해야 할 건물(W)을 지을 수 있는 최소시간을 구하는 문제이다. 건물을 짓는 순서가 있고 싸이클이 없는 그래프이므로 '위상 정렬'을 이용한다. 더 고려해야 하는 점은 건물을 짓는데 걸리는 시간이 있기 때문에, 선수 건물이 여러 개라면 그 중 가장 오래 걸리는 건물 시간에 맞춰야 한다. 즉 A -> C , B -> C라는 선후 관계가 있을 때 A 건물을 지을 때 30, B 건물을 짓는데 50이라면 50분 있다가 C건물을 지어야한..

article thumbnail
[백준] 줄 세우기 - 2252 : 위상 정렬 - JAVA
알고리즘/백준 2024. 2. 3. 15:33

문제 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 핵심 풀이 위상 정렬을 이용해야하는 문제이다. 왜 위상 정렬을 이용하여 해결해야 하는가? 이 문제는 일부 학생들의 키 순서가 주어졌을 때, 전체 학생을 키 순서대로 줄을 세운 결과를 반환해야 한다. 즉 일분 학생간의 순서를 지키며, 전체 학새생을 줄 세워야한다. 위상정렬은 사이클이 없는 방향 그래프에서 노드 순서를 찾는 알고리즘이다. 예를 들어 과목의 선수과목이 있는 과목들이 주어질 때 선수과목을 고려해서 수강 순..

article thumbnail
[백준] 특정 거리의 도시 찾기 - Java : 그래프
알고리즘/백준 2024. 1. 29. 17:43

✓ 문제 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 그래프들의 단방향 정보가 주어지고 출발 도시로부터 최단 거리가 X인 다른 정점들을 찾는 문제이다. 단순히 거리가 X인 것이 아니라 최단거리여야 한다. ✓ 풀이 처음에는 DFS탐색을 이용하여 dpeth가 X일 때를 찾았다. 하지만 문제는 최단거리를 구해야 된다는 점이었다. 최단거리를 갱신해주기 위해서는 결국 모든 탐색을 다 해줬어야 했다. 비효율적인 것 같아서 더 효율적인 방법을 찾았..

article thumbnail
[백준] 상어 초등학교 : 21608 : Java - 구현
알고리즘/백준 2024. 1. 23. 17:40

1. 문제 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 2. 접근 N의 범위는 3

article thumbnail
[백준] 강의실 배정 : 11000 : Java - 그리디
알고리즘/백준 2024. 1. 22. 22:11

1. 💎 문제 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 2. 🤔 접근 구해야 하는 것은 최소 강의실의 수이다. 그러므로 n개의 강의실을 운영하다가 n개의 강의실이 모두 꽉 차있어 새로운 강의를 열 수 없을 때, 강의실을 늘려준다. 1. 우선 순위 큐 사용 n개의 강의실을 운영하기 위해 우선 순위 큐를 사용한다. 왜냐하면 최소의 강의실을 유지하기 위해서는 여러 개의 강의실 중 가장 일찍 끝나는 강의실에 새로운 강의를 배정해야 되기 때문이다. 그러므로 항상 가장 일찍 끝나는 강의실을 찾기 위해 삽입 시 오름차순 정렬을 해주는 우선 순위 큐를 사용한다. 2..