목록개발/문제풀이 (76)
원하는 것은 뭐든지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3ZMZm/btsJfBpIYF4/o3xH9Ck23tfAoEwLnvyA20/img.png)
문제풀이입력으로 송전탑의 개수 n이 주어지고 송전탑끼리 연결되어 있는 정보가 담긴 리스트가 넘어온다.하나의 선을 끊어서 두 개의 전력망을 만들어주는데 두 개의 차이가 가장 적은 경우를 return 해주면 된다. 제출 1 - 정답import java.util.*;class Solution { public int solution(int n, int[][] wires) { int answer = Integer.MAX_VALUE; Map> map = new HashMap(); for(int[] wire : wires){ //map 만들어줌 map.putIfAbsent(wire[0], new HashSet()); map.putIfA..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bj1Ntg/btsJemsyZgU/p4yNKbmxucTpTZru9tWsf0/img.png)
문제풀이입력으로 map이 주어진다. 첫 번째 자리 (0,0)에서 시작해 map의 가장 끝 (n, m) 자리까지 가는데 최소거리가 얼마나 되는지 return 하는 문제이다. 만약 가지 못하는 경우라면 -1을 뱉는다.최솟값이기 때문에 BFS를 가지고 풀이해야겠다고 생각했다.제출 1 - 정답import java.util.*;class Solution { public int solution(int[][] maps) { int answer = bfs(maps); return answer == 0 ? -1 : answer; } private int bfs(int[][] maps){ int rowSize = maps.length; int colSize..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/X9qqo/btsJeRFeJhG/dWkgURCsPdp4AOzJ1iXYBk/img.png)
문제풀이입력으로 주어지는 numbers를 +,- 해서 target의 수로 만들 수 있는 경우의 수를 출력하면 된다.제출 1 - 정답class Solution { private int answer = 0; public int solution(int[] numbers, int target) { visited = new boolean[numbers.length]; dfs(numbers, target, 0, 0); return answer; } private void dfs(int[] numbers, int target, int val, int depth){ if(depth == numbers.length){ if(tar..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/q6WOP/btsJerfDHJ2/kuIXQsAQn7eg1qjAlVgzF0/img.png)
문제풀이입력으로 지도가 주어진다. D는 벽이고 R은 시작 지점 G는 도착지점 .은 이동가능 지역이다.이동할 때는 스르륵 미끄러져 이동한다. 벽을 만나거나 지도의 끝 부분에 닿았을 때만 멈출 수 있다.R에서 시작하여 G까지 갈 수 있는 경우 중 최소값을 리턴하면 된다.만약 G까지 도달 할 수 없는 경우에는 -1을 return 한다. 제출 1 - 오답class Solution { private int answer = Integer.MAX_VALUE; private boolean[][] visited; private static final int[] DX = {-1,0,1,0}; private static final int[] DY = {0,1,0,-1}; public int s..