본문 바로가기

알고리즘181

[백준] 토마토/자바 문제         레벨: G5알고리즘: BFS풀이시간: 2시간힌트 참조 유무: 유https://www.acmicpc.net/problem/7569 1 번째 시도   기존 bfs와 다른 점은 하나인 줄 알았다. 방향이 상,하가 추가 되서 총 6개를 탐색해야 된다는 점이다 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;public class Main { static int[] xx; static int[] yy; public stat.. 2024. 5. 12.
[백준] 연구소 / 자바 / 브루트포스(그래프 순회) 문제         레벨: G4알고리즘: 브루트포스(그래프 순회)풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/145021 번째 시도   벽을 세우는 규칙이 안 보이는 것 같다결국 완전탐색 선택또 하나, 힌트인 것은 입력 값 N,M이 8이하이다. 결국 완전탐색을 해도 된다는 소리이다.깊은 복사 필수!!1. 얕은 복사 : '주소 값'을 복사한다는 의미입니다. 2. 깊은 복사 : '실제 값'을 새로운 메모리 공간에 복사하는 것을 의미하며,  dfs로 벽을 세울 경우의 수를 탐색하고 3개의 벽을 세우면 bfs함수 호출하여 바이러스를 퍼트리기바이러스를 퍼트릴 때 원본배열에서 퍼트리는 것이 아니라 얕은 복사를 한 배열에 퍼트린 것이다. import java.io.Bu.. 2024. 5. 8.
[백준] 벽 부수고 이동하기/자바 문제         레벨: G3알고리즘: BFS 풀이시간:  1시간 20분힌트 참조 유무: 유https://www.acmicpc.net/problem/22061 번째 시도   벽을 언제 뽀갤 건지 한 번에 알 수 있나?NO근데 왜 dfs가 아니고 bfs 인가?dfs는 최단 경로를 찾는 것이 아니라 끝까지 탐색해서 경로를 찾는 것이기 때문에 첫 번째 도착한 것이 최단경로임을 보장하지 않는다. 최단 경로 찾기에 bfs가 적합하다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;public class Main.. 2024. 5. 7.
[백준 1167] 트리의 지름 / 자바 / 트리순회(dfs) 문제         레벨: G2알고리즘: DFS풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/11671 번째 시도   dfs를 통해 임의의 정점 하나에서 가장 먼 정점을 구한다. (임의의 정점은 아무거나 상관없다.)dfs를 통해 구한 정점으로 부터 가장 먼 정점까지의 거리를 구한다. 이게 가장 긴 지름임을 보장하는 이유는 예를 들어 설명하겠다.1 - 2 - 3 - 4 - 5 - 6 이런 일직선의 트리를 생각해보자가장 긴 지름을 구하려면 끝점 두 개를 구해야 한다. 1. 임의점에서 dfs를 하면 끝점 하나가 찾아진다.2. 그 끝점을 기준으로 dfs 하면 다른 끝점이 찾아진다.import java.util.*; public class Main { .. 2024. 5. 6.
[백준 10026] 적록색약 / 자바 / 그래프 순회(dfs) 문제         레벨: G2알고리즘: DFS 풀이시간:  30분힌트 참조 유무: 무https://www.acmicpc.net/problem/100261 번째 시도   할 일 배열 초기화적록색맹x 일때 dfs적록색맹o 일때 dfs인접해있는 요소를 비교하는 문제일 때는 방향 설정 배열을 쓰는 것이 Point! static int[] x = {1,0,0,-1}; static int[] y = {0,1,-1,0};dfs함수의 for문과 main함수에서 for문을 짤 때 헷갈릴 수도 있다.dfs함수는 동,서,남,북 방향으로 주어진 글자랑 같은 게 무엇인지 찾는 것이고 main함수의 for문은 전체배열을 순서대로 순회하는 것이다 문제가 카드의 경우의 수를 구하는 경우라면 main함수의 for문은 없을 것이다. .. 2024. 5. 5.
[백준 1068] 트리 / 자바 / 트리 순회(dfs) 문제         레벨: G5알고리즘: DFS풀이시간: 2시간힌트 참조 유무: 유 https://www.acmicpc.net/problem/10681 번째 시도   import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.StringTokenizer;public class Main { static ArrayList list = new ArrayList(); static boolean[] visited; static int answer = 0; public static void main(String[] .. 2024. 5. 4.
[백준 1260] DFS와 BFS / 자바 / 그래프 순회(dfs,bfs) 문제         레벨: S2알고리즘: DFS, BFS풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/12601 번째 시도   가장낮은 숫자부터 탐색해야 한다하니 인접행렬로 그래프 구성dfs 메소드 작성 순서visted[] = true할 일for문으로 dfs 재귀호출import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main { static StringBuilder sb = new.. 2024. 5. 3.
항해99 32일차 TIL(강의실 배정 / 백준) 문제         레벨:  G5알고리즘: 그리디풀이시간: 1시간힌트 참조 유무: 무https://www.acmicpc.net/problem/110001 번째 시도   끝나는 시간으로 정렬 현재 인덱스 끝나는 시간이 다음 인덱스 시작 시간보다 크다면 answer++ 방의 개수를 새는 자료구조 고민  min변수에 방 최소 개수 담고 우선순위에큐에 끝나는 시간 담기 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { public static void main(String[] args) throws IOException { .. 2024. 5. 1.
항해99 31일차 TIL( 저울 /백준) 문제         레벨: G2알고리즘: 그리디 풀이시간: 1시간힌트 참조 유무: 유<a href="https://www.acmicpc.net/problem/2437" target="_blank" rel="noopener norefer.. 2024. 4. 30.