목록코딩테스트/백준 (15)
Jam's story

이 문제는 BFS로 접근 이유 -> BFS는 시작노드에서, 인접한 노드를 탐색 후, 조건에 맞는 인접한 노드를 기준으로 다른 인접한 노드를 탐색한다. 반면에, DFS는 시작노드에서 자식노드를 탐색 후, 그의 자식노드를 탐색한다. 그렇기 때문에 이 문제에서는 인접한 노드를 이용하여 최단거리를 요구하니, BFS를 사용하는 것이 더 유용하다고 판단 package days01; import java.awt.Point; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class B7562 { //X의 이동좌표 static int[] moveX= {-2,-1,1,2,2,1,-1,-2}; static int[] ..
상하좌우로만 이동가능 배열수를 입력받아서, area배열과 방문했는지 체크하는 배열 선언 for문을 돌려서 area 배열을 채워준다. result는 각각의 단지들마다 수 저장하는 것 시작점이 주어지지 않았기 때문에 for문을 돌려서 1이고, 방문한적이 없으면 그것이 start 지점이므로 이미 하나 찾았으니까 count=1로 시작하고, bfs 함수 실행 bfs함수는 재귀함수인데, 그안에서 for문으로 상하좌우 다 탐색하면서 조건에 맞으면 bfs 다시 실행시키고 count++ arrayList에 count를 넘겨주고, 오름차순 출력이므로 정렬 arrayList의 size()를 통해 총 갯수를 반환, for문을 통해 각각의 수를 반환 import java.util.ArrayList; import java.uti..
움직이는 변화방향이 8곳이다. 변화량을 8개를 만들어준다. 테스트 케이스 갯수와, 배열 크기와, 시작점 ,목표점을 입력받아 Point로 넣어주고 bfs 함수 실행 que 에 시작점을 넣어주고 visited는 방문했는지 안햇는지 판별하는 배열 que가 비어있지않다면, Point 지점을 가져온다. 목표지점과 목표값이 같다면 출력 아니라면 8개의 변화를 이동해서 visited 는 true로 , 새로운 좌표에 = 이전좌표+1 (이동량 갯수 세기) que 에 새로운 좌표를 넣어준다. package days01; import java.awt.Point; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class..
DFS ->스택이용 BFS ->큐 이용 DFS,BFS 응용/활용 문제 단순히 모든 정점을 방문하는 것이 중요한 문제의 경우 DFS, BFS 두 가지 다 가능 경로의 특징을 저장해둬야 하는 문제 예를 들면 각 정점에 숫자가 적혀있고 a부터 b까지 가는 경로를 구하는데 경로에 같은 숫자가 있으면 안 된다는 문제 등, 각각의 경로마다 특징을 저장해둬야 할 때는 DFS를 사용한다. (BFS는 경로의 특징을 가지지 못함) 최단거리 구해야 하는 문제 + 간선의 가중치 1 미로 찾기 등 최단거리를 구해야 할 경우, BFS가 유리하다. 왜냐하면 깊이 우선 탐색으로 경로를 검색할 경우 처음으로 발견되는 해답이 최단거리가 아닐 수 있지만,너비 우선 탐색으로 현재 노드에서 가까운 곳부터 찾기 때문에경로를 탐색 시 먼저 찾아..
import java.io.*; public class Main { static int count =0; public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); solve(n); } static void solve(int n) { while(true) { if(n%5 ==0) { count += n/5; System.out.println(count); return; }else { n -= 3; count++; } if(n
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); int c = in.nextInt(); if (c