본문 바로가기

백준133

[백준] 벽 부수고 이동하기/자바 문제         레벨: 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.
[백준] 보석 도둑 /자바 문제         https://www.acmicpc.net/problem/1202레벨: G2알고리즘: 그리드 풀이시간: 40분힌트 참조 유무: 무1 번째 시도   보석의 가격으로 정렬해야 하나? 보석의 무게로 정렬해야 하나?가격으로 정렬 후 가방 순회하며 담을 수 있는 지 판단자료구조 고민 현재 가방에서 선택할 수 있는 보석을 우선순위큐에 넣기 우선순위 큐를 보석의 값으로 내림차순 정렬가장 보석의 값이 큰 거 하나 선택이 과정을 가방의 개수 만큼 반복import java.util.*; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); .. 2024. 4. 29.
[백준] 카드 정렬하기 / 자바 문제         https://www.acmicpc.net/problem/1715레벨: G4알고리즘: 그리드풀이시간: 1시간힌트 참조 유무: 무1 번째 시도   오름차순 정렬 필요두가지 생각이 들었습니다. 정렬 후1. 두 묶음씩 묶어서 계속 더해가며 줄일 것인가2. 1 번째와 2 번째만 계속 더해가며 줄일 것인가예시를 들어 비교1 3 5 10 4 + 15 + 4 + 15 = 38 4 + 4+5 + 9 +10 =32 결론: 2 번째 방법 선택 // 3, 5킬로그램 봉지가 있다.// 최대한 5킬로그램 봉지를 많이 들고가야 한다.// 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.import java.util.*;import java.io.*;class Main { public static v.. 2024. 4. 29.