[백준] 15652 : N과 M (4) - JAVA [자바]
·
PS/BAEKJOON
안녕하세요.오늘은 N과 M (4) 문제를 풀어보도록 하겠습니다. 📌 접근길이가 M인 수열을 만들면 되므로 dfs를 사용하였습니다.길이 M 달성 시, result에 결과를 추가하고 재귀를 종료하게 됩니다.. dfs는 이전에 추가한 숫자를 알 수 있게 before를,현재 만든 문자열을 뜻하는 str를 인자로 갖게 구조를 만들었습니다. 💻 풀이// hyebleeimport java.io.*;import java.util.*;public class Main { public static int N, M; public static StringBuilder result = new StringBuilder(""); public static void dfs(int depth, String str, int befo..
[백준] 16954 : 움직이는 미로 탈출 - JAVA [자바]
·
PS/BAEKJOON
안녕하세요.오늘은 움직이는 미로 탈출 문제를 풀어보도록 하겠습니다. 📌 접근1초가 지난 뒤에는 벽 모양이 바뀌므로, 같은 시간대(초)의 case들을 전부 처리한 한 뒤 벽을 움직여야합니다.따라서 bfs를 사용해야 합니다. 탐색 모양은 dx, dy 배열을 이용하여 정의하였습니다.배열을 벗어나는 위치는 isInRange() 함수로 판별합니다. 큐가 빌 때까지 큐에서 원소를 꺼내는 bfs의 조건에,현재 큐의 사이즈만큼만 꺼내고 다음 시간대(초)의 원소들을 탐색하는 조건을 추가하여 코드를 짰습니다.이는 동시간대의 원소를 전부 처리한 뒤에 벽을 움직이기 위함입니다. 💻 풀이// hyebleeimport java.io.*;import java.util.*;// 최단 경로는 bfs로public class M..
[백준] 2668 : 숫자고르기 - JAVA [자바]
·
PS/BAEKJOON
안녕하세요.오늘은 숫자고르기 문제를 풀어보도록 하겠습니다. 📌 접근원소를 순회할 때 사이클이 만들어진다면, 조건에 만족하는 수가 된다. ex1) 1 을 뽑을 수 있는지 ?1 -> 3 (arr[1]) -> 1 (arr[3]) -- 사이틀 발생 O ex2) 2 를 뽑을 수 있는지 ?2 -> 1 (arr[2]) -> 3 (arr[1]) -> 1 (arr[3]) -- 사이클 발생 X 만약 조건을 만족하는 수라면, 리스트에 넣는다.최종 리스트를 오름차순 정렬하면 정답을 구할 수 있다.💻 풀이// hyebleeimport java.io.*;import java.util.*;public class Main { public static int N; public static int[] line2; public st..
[백준] 13549: 숨바꼭질 3 - JAVA [자바]
·
PS/BAEKJOON
안녕하세요.오늘은 백준의 숨바꼭질 3 문제를 풀어보도록 하겠습니다. 📌 접근최단 거리를 구해야하므로 bfs를 활용하였습니다.또한 값을 늘리는 연산(+1, *2)는 100000을 넘지 않는 조건을,값을 줄이는 연산(-1)은 0보다 작아지지 않는 조건을 걸어야합니다.그래야 할당한 배열의 index를 넘는 오류가 발생하지 않습니다.💻 풀이import java.io.*;import java.util.*;// 최단 경로는 bfs로public class Main { public static int N, K; public static int[] result = new int[100001]; public static void bfs() { Queue queue = new ArrayD..