b9328. 열쇠
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/9328 🔑 자바로 푸는 열쇠 문제 풀이 (백준 9328) 📌 문제 개요 감옥의 평면도가 주어졌을 때, 상하좌우 이동을 통해 가능한 많은 문서(’$’)를 얻는 것이 목표입니다. 벽은 *, 빈 공간은 ., 문은 A~Z, 열쇠는 a~z, 문서는 $열쇠가 있어야 문을 통과할 수 있음열쇠는 한 번 획득하면 해당 종류의 문을 모두 열 수 있음감옥의 외곽 어느 지점에서든 침입 가능 💡 예제 입력15 17*****************.............**$**B*A*P*C**X*Y*.X.*y*x*a*p**$*$**$******************cz 예제 출력3 🧠 알고리즘 접근 방식 이 문제는 BFS(너비 우선 탐색) 을 기반으로 풀..
b13913. 순간이동 4
·
Algorithm & Data Structures/BOJ
📌 자바(Java)로 푸는 숨바꼭질 4 - 백준 13913🧍‍♂️➡️🧍‍♀️ 최소 시간 + 이동 경로까지 출력하는 BFS 문제! 🔎 문제 개요 백준 13913번 - 숨바꼭질 4는정수 N(수빈이 위치)에서 K(동생 위치)까지다음 세 가지 연산으로 이동해 최소 시간을 구하는 문제입니다. X - 1X + 1X * 2 뿐만 아니라,✔ 최단 시간과 함께✔ 그때의 이동 경로를 정확히 출력해야 합니다! 💡 예제 입력5 17 💡 예제 출력45 10 9 18 17 🛠 알고리즘 접근 방식 이 문제는 전형적인 최단 거리 탐색 → BFS 문제입니다.하지만 경로 추적까지 해야 하므로,✔ 이동 이전 위치를 기록하는 prev[] 배열을 활용해야 합니다. 🔹 Java 코드 설명📌 Node 클래스static clas..
Lv 2. 지게차와 크레인
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/388353 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   📌 자바(Java)로 푸는 지게차와 크레인 문제 - 프로그래머스 🚜🏗️🔎 문제 개요프로그래머스 - 지게차와 크레인 문제입니다.창고(storage)의 상태가 주어지고,크레인과 지게차의 요청(requests)이 순서대로 주어질 때,모든 요청이 처리된 후 창고에 남아있는 컨테이너 개수를 구하는 문제입니다.🔹 요청 처리 방식1️⃣ 크레인 사용 요청: 창고에 있는 특정 컨테이너를 모두 제거2️⃣ 지게차 이동 요청: 해당 컨테이너가 창고 외..
b.1707 이분 그래프
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1707   📌 자바(Java)로 푸는 이분 그래프 판별 문제 - 백준 1707 🚀 🔎 문제 개요 백준 1707번 - 이분 그래프 판별 문제입니다.주어진 무방향 그래프가 이분 그래프인지 판별하는 것이 목표입니다. 이분 그래프란? • 모든 정점을 두 개의 그룹으로 나눌 수 있는 그래프 • 같은 그룹 내 정점끼리는 서로 연결되지 않아야 함 • 즉, 인접한 정점은 항상 다른 그룹에 속해야 함 💡 예제 입력23 21 32 34 41 22 33 44 1💡 예제 출력YESNO➡ 첫 번째 그래프는 이분 그래프이며, 두 번째 그래프는 이분 그래프가 아님 🛠 알고리즘 접근 방식 BFS(너비 우선 탐색) 또는 DFS(깊이 우선 탐색)를 활용한 그래프 색칠..
b24445. 알고리즘 수업 - 너비 우선 탐색 2
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/24445   📌 자바(Java)로 푸는 너비 우선 탐색(BFS) - 백준 24445 문제 풀이 🚀🔎 문제 개요이 문제는 백준 24445번 - 알고리즘 수업 - 너비 우선 탐색 2 문제입니다.기본적인 BFS(너비 우선 탐색) 과정은 24444번과 동일하지만,이번에는 정점 방문 순서를 내림차순으로 정렬해야 합니다.💡 예제 입력5 5 11 41 22 32 43 4💡 예제 출력14325➡ BFS 탐색 시 정점을 큰 숫자부터 방문하도록 구현해야 합니다.🛠 알고리즘 접근 방식이 문제를 해결하는 방식은 24444번 문제와 동일하지만,각 정점의 인접 리스트를 내림차순(Collections.reverseOrder())으로 정렬해야 합니다.🔹 Java..
b24444. 알고리즘 수업 - 너비 우선 탐색 1
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/24444   📌 자바(Java)로 푸는 너비 우선 탐색(BFS) - 백준 24444 문제 풀이 🚀🔎 문제 개요이 문제는 백준 24444번 - 알고리즘 수업 - 너비 우선 탐색 1 문제입니다.주어진 그래프를 너비 우선 탐색(BFS) 하면서 방문 순서를 기록해야 합니다.각 정점은 오름차순으로 방문해야 하며, 방문 순서는 result[] 배열에 저장해야 합니다.💡 예제 입력5 5 11 41 22 32 43 4💡 예제 출력12345➡ 1번 정점부터 BFS 탐색하며 방문 순서를 출력해야 합니다.🛠 알고리즘 접근 방식이 문제를 해결하기 위해 BFS(너비 우선 탐색) + 정렬을 활용합니다.✏️ 주요 고려 사항✔ BFS를 사용하여 그래프를 탐색✔ 간..
Lv 2. 석유 시추
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이번 문제는 석유 시추관을 2차원 배열상에서 내렸을때 마주하는 최대 석유 매장량을구하는 문제이다. 이 문제를 풀기위해 2가지 class를 따로 정의 하였다.Node class를 통해서 좌표 class 를 정의하여 bfs 탐색을 원활하게 하고자 하였고Oil class를 통해서 석유 매장량을 체크하고 최소 몇의 y좌표에 내렸을때 마주할 수 있는지최대 몇의 y좌표에서 시추관을 내렸을때 마주할 수 있는지를 확인할 수 있게 하였다. int[][] ..
Lv 3. 부대복귀
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/132266 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 특정 목적지에서 여러 출발지까지의 최소 이동 거리를 구하는 문제다.주어진 그래프는 양방향 도로로 연결되어 있으며,BFS를 사용해 목적지로부터 각 노드까지의 거리를 계산한다.먼저 solution 메서드는 입력으로 주어진 그래프 정보를 graph 리스트 배열로 초기화하고,각 노드의 거리를 저장할 cost 배열을 -1로 초기화하여 방문 여부와 거리를 동시에 관리한다.그런 다음, 모든 도로 정보를 읽어 graph에 양방향으로 저장한다...
Lv 3. 경주로 건설
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 BFS를 사용해 격자형 경로에서 최단 비용을 계산하며,방향 전환에 따른 코너 비용까지 고려하여 최적의 이동 경로를 찾는 문제다. 각 셀에서 이동 방향에 따라 비용이 달라지므로,방향을 기록할 수 있는 3차원 배열 isVisited를 사용해각 위치와 방향에 따른 최소 비용을 저장한다. 먼저 solution 메서드에서 answer를 최댓값으로 초기화하고 bfs 메서드를 호출해 탐색을 시작한다.  bfs 메서드는 시작 지점 (0,0)에서..
12851. 숨바꼭질2 (Java)
·
Algorithm & Data Structures/BOJ
오랜만에 풀어서 그런지 자잘한 오류가 너무 많았던 문제였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Queue; import java.util.StringTokenizer; public class Main { static int N, M, answer = 0,time=0; static boolean[] isVisited = new boolean[200005]; public static void BFS() { Queue q = new ArrayDeque(); q.offer(N); boolean fla..