본문 바로가기

dfs3

[JAVA] 백준 - 캐슬 디펜스 17135 (테케 다 맞는데 틀린다면?) www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 자꾸 틀린다면 꼭 점검해야할 상황을 소개한다. (본인 경험) 1. 궁수 3명을 배치하는 모든 경우를 구했는가? - 문제에서 N+1 번째 칸에 궁수 3명을 배치한다고 하였다. 한 칸에 한명만 올 수 있다. 따라서 M개의 자리에서 3개를 선택하는 모든 경우의수를 구해야한다. Combination 로직을 DFS로 구현해주면 된다. 여기에서 M = 5 일때 3개의 자리를 선택하는 경우의 수는 5C3 이므로 10가지가 나와야한다... 2021. 3. 4.
[JAVA] 촌수 계산 (백준 2644) dfs,bfs 문제가 제일 재밌는거 같다. 출발지와 목적지를 정하고 가는 데 몇군데를 거치느냐를 따지면 된다. 예를 들어, 7번 목적지에서 3번으로 갈려면? 최소 3번만에 갈 수있다. dfs로 위의 로직을 구현한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main{ static int n; static int st,ed; static int answer=-1; public static void main(String[] args) throws IOException{ FastScanner fs = new FastScanner.. 2020. 8. 14.
[JAVA] 괄호 추가하기 (백준 16637) 아직까지 문자하나하나 다루는 거랑 알고리즘 할때, 컬렉션을 다루는 스킬이 많이 부족함을 느낀다. 매일 하나씩 풀다보면 적응 되겠지... dfs로 간단하게 풀수있다. a + b - c 가 있다면 1) a+b 하고 넘기기 2) a+ (b-c) 하고 넘기기 그림으로 설명하면 아래와 같다. import java.io.*; import java.util.*; public class Main { static int n; static int answer = -(int)Math.pow(2,31); static ArrayList nums = new ArrayList(); static ArrayList ops = new ArrayList(); public static int cal(int a,int b,char op){ .. 2020. 8. 10.