일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 시뮬레이션
- 완전탐색
- COSPRO
- dp
- 이젠 골드구현도 어렵네..
- 01BFS
- GatherTown
- 우선순위큐
- 취득후기
- 알고리즘
- 게더타운시작
- 백준
- COSPROJAVA1급
- 백준코딩테스트
- 세그먼트트리
- QUICKSTARTGUIDE
- 재귀함수
- 자바PS
- 다이나믹프로그래밍
- 네트워크플로우
- BFS
- 구현
- 다익스트라
- DFS
- java
- YBMCOS
- deque
- spring
- PS
- 엘라스틱서치
- Today
- Total
목록알고리즘/완전탐색(BFS,DFS) (70)
공부공간
https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 www.acmicpc.net Map정보에서 최대 M개의 치킨집만 남기고 폐업을 할예정에서, 집과 남겨진 치킨집 사이의 최솟값을 구하는 문제이다. 딱 봐도, 특별한..
https://www.acmicpc.net/problem/2933 2933번: 미네랄 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄이 저장되어 있으며, 던진 막대기가 미네랄을 파괴할 수도 있다. 동굴은 R행 C열로 나타낼 수 있으며, R×C칸으로 이루어져 있다. 각 칸은 비어있거나 미네랄을 포함하고 있으며, 네 방향 중 하나로 인접한 미네랄이 포함된 두 칸은 같은 클러스터이다. 창영은 동굴의 왼쪽에 서있 www.acmicpc.net 미네랄 동굴에서 창영과 상근이 반대편으로 창을 던지면서 미네랄이 깨지는 것을 구현하면서 깨진 덩어리들이 공중에 떠있으면은 바닥으로 내리고,..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWm8hNu6llcDFASj SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com NxN의 맵에서 왼쪽 위에서 시작하여 오른쪽아래까지 한 문자씩 이어붙여서 사전순으로 가장 빠른 문자열을 찾는 문제이다. Priority_Queue를 이용하여 Log N의 시간으로 제일 앞의 문자열만 가지고 이름을 만든다. 오른쪽아래에 도달하였을때에, 종료하면 사전순으로 가장빠른 문자열이 생성된다. import java.io.BufferedReader; import java.io.InputStream..
https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 주어진 맵에서 섬들을 나누고, 그 섬들끼리 연결할수있는 다리를 놓아본 후, 다리의 최소길이를 출력하는 문제이다. 조건이 많아서 까다롭지만, 제약조건이 충분히 작아서 시간초과의 걱정은 적었던.. BFS로 섬들을 나누고, 섬의 경계에서 직선으로 출발하였을때에 만나는 여부와, 그 길이를 우선순위큐에 넣어준다 ( 간선의 가중치가 적은것에 우선순위를 부여 ) 그리고 맵의 개수만큼 노드..
2048게임을 그대로 만들면된다. DFS를 돌면서 현재 맵을 변형한 것을 인자로 넘겨주면서 5번까지 돌면서 가장 큰값을 리턴해주면된다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int answer = 0,N; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V1SYKAaUDFAWu SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 보호필름에는 층이 존재하는데, 이층은 가로 W ,세로 D의 크기를 가진다. 검사합격 기준 K가 주어질때, 0부터 W-1까지의 열에서 연속해 같은숫자가 K개 주어지면 그 열은 합격기준을 통과한다 초기에 통과기준을 넘지못하면, 약품을 투입해서 세로 D중 몇개를 한문자로 바꿀수 있다. 최소한의 약품을 사용하여 합격기준을 통과하고 싶을때, 최소한의 약품의 수를 구하는 문제이다. 문제는 간단하다. 최소한의 ..
연구소 문제 시리즈 중 마지막이 아닐까? 바이러스의 개수 중 M개를 선택하여 BFS를 진행하면된다. 만약 처음에 선택되지 않은 바이러스를 중간에만나면 그 바이러스도 활성상태가되어 상하좌우 뻗어가는 문제이다. 비활성에서 활성으로 변할때 1초가 소요되므로 따로 처리해주지않고 진행한다. 맵에 더이상 진행할 곳이 없거나, 서브셋으로 선택하여도 바이러스로 모두 채울수 없을때에 해당 ANSWER값을 출력한다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparato..
https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n(1 ≤ n ≤ 100)이 주어지고 둘째 줄에는 버스의 개수 m(1 ≤ m ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 버스의 정보는 버스의 시작 도시 a, 도착 도시 b, 한 번 타는데 필요한 비용 c로 이루어져 있다. 시작 도시와 도착 도시가 같은 경우는 없다. 비용은 100,000보다 작거나 같은 자연수이다. 시작 www.acmicpc.net 플로이드-워셜문제의 기본적인 형태이다. 그래프에서 전체의 최단경로를 구할때에 O(N^3)으로 구할수있다. For문을 돌면서 나와 인접..