Algorithm/Java11 DFS와 BFS 알고리즘 완벽 가이드!! [탐색 알고리즘의 기본부터 예제 코드까지] 포스팅 하나로 탐색 알고리즘은 그래프를 순회하거나 특정 조건을 만족하는 경로를 찾는 데 자주 사용된다. 특히 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)은 가장 기초적이면서도 중요한 탐색 기법으로, 많은 문제 해결의 기반이 된다. 이번 포스팅 에서는 DFS와 BFS의 개념, 작동 방식, 예제 코드, 그리고 두 알고리즘의 차이점으로 작성해보려 한다. DFS (Depth-First Search: 깊이 우선 탐색)DFS란?깊이 우선 탐색은 시작 노드에서 한 방향으로 깊게 들어가며 탐색을 진행하는 방식이다. 한 경로를 끝까지 탐색한 후, 더 이상 갈 곳이 없을 때 다른 경로로 이동한다.주요 특징:스택 자료구조(혹은 재귀 호출)를 사용한다.그래프의 경로가 깊은 곳까지 먼저 탐색된다.순환 구조나 무한 루프를 방지하.. Algorithm/Java 2025. 1. 4. 백준(BOJ)에서 Java로 문제를 풀 때 알아야 할 핵심 팁들 및 제출시 주의사항 안녕하세요! 오늘은 백준에서 Java로 알고리즘 문제를 풀 때 꼭 알아야 할 핵심 팁들을 공유해드리려 합니다. 제가 경험한 내용을 바탕으로 여러분에게 도움이 될 만한 정보들을 정리해보았습니다.1. 클래스와 패키지 설정백준에 제출할 때는 반드시 다음 조건을 지켜야 합니다:클래스명은 Main이어야 합니다.패키지는 사용하지 않습니다.public class Main으로 작성해야 합니다.2. 추가 클래스 사용 방법메인 클래스 외 추가 클래스가 필요하다면:public이 아닌 클래스내부(Inner) 클래스를 활용하세요3. 메인 함수에서의 정적(Static) 메서드 사용main 함수 내에서 작업할 때는 모든 변수와 메서드를 static으로 선언해야 합니다. 귀찮다면 별도의 솔루션 메서드로 래핑하는 방법도 있습니다.4... Algorithm/Java 2024. 12. 6. [DFS로 탐색하기] 백준 2667번 JAVA : 단지 번호 붙이기 2차원 배열에서 특정 조건을 만족하는 영역(1)을 찾아내고, 해당 영역의 크기를 세는 문제를 해결할 때 DFS(깊이 우선 탐색)를 활용할 수 있다. 이 과정에서 탐색이 진행되는 동안 방문한 노드는 처리하여 중복 방문을 방지하고, 단지의 크기를 반환하는 방식으로 구현한다. 문제 정의예를 들어, 7x7 크기의 2차원 배열이 있다고 가정한다. 배열은 0과 1로 구성되며, 1은 단지의 일부를 나타낸다. 이때, 서로 연결된 1들을 하나의 단지로 간주하고 각 단지의 크기를 구해야 한다.입력 배열은 다음과 같다고 가정한다. 0110100 0110101 1110101 0000111 0100000 0111110 0111000 이 배열에서는 총 세 개의 단지가 존재하며, 각 단지의 크기는 각각 7, 8, 9이다.. Algorithm/Java 2024. 12. 6. [Java 알고리즘] 백준 2309 일곱난쟁이 [Java 알고리즘] 백준 2309 일곱난쟁이정답코드:import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Main { public static void findCombination(ArrayList dwarfs, int start, int depth, List current, List> result){ if (depth == 7){ int sum = 0;.. Algorithm/Java 2024. 10. 19. [Java 알고리즘] 백준 2635 수 이어가기 [Java 알고리즘] 백준 2635 수 이어가기 //import java.io.FileReader;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;public class Main { public static void main(String[] args) throws IOException {// String filePath = "src/algorithms/Java_Skill_Boost_Challenge/수_이어나가기_2635/input.txt";// BufferedReader br = new BufferedReader(.. Algorithm/Java 2024. 10. 15. [Java 알고리즘] 백준 2669 직사각형 네개의 합집합의 면적 구하기 [Java 알고리즘] 백준 2669 직사각형 네개의 합집합의 면적 구하기//import java.io.FileReader;import java.io.IOException;import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException {// String filePath = "src/algorithms/Java_Skill_Boost_Challenge/직사각형_네개의_합집합의_면적_구하기_2669/input.txt";// BufferedReader br = new BufferedReader(n.. Algorithm/Java 2024. 10. 15. ConvertListtoObject 2차원 배열을 HashMap으로 리턴하기 Q: 2차원 배열(배열이 요소로 입력됨.)을 입력 받아 각 배열을 이용해 만든 HashMap을 리턴하기. /*입력: arr[i]는 stringarr[i].length는 0 또는 2출력: HashMap으로 리턴.주의사항: 중복되는 키의 경우 초기의 값을 사용빈 배열을 입력받은 경우 빈 배열 리턴.arr[i]의 길이가 0 인경우 무시하기.*/ A:public class min { public HashMap convertListToHashMap(String[][] arr) { // 새로운 해시맵을 생성하기. HashMap map = new HashMap(); // 빈 배열을 입력받은경우 빈 해시맵을 리턴 // if(arr.length == 0) return new HashMap(); if.. Algorithm/Java 2023. 1. 20. 문자열 첫 글자 대문자로 리턴하기 [letterCapitalize] // .split() .substring() .join() Q : 문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자가 되도록 리턴하기. 주의사항String으로 리턴 시키세요.연속된 공백이 있을 수 있다.단어는 공백으로 구분한다.빈 문자로만 이루어진 문자열 입력 받으면 빈 문자열 리턴하기. 코드 작성해보기public String letterCapitalize(String str) {// 빈 문자열을 입력받은 경우 빈문자열 리턴.// if(str.isEmpty()) return ""; if(str.length() == 0 ) return ""; String[] words = str.split(" "); // split을 활용해서 공백을 기준으로 잘라 배열로 만들기. Stirng result = ""; // 출력할 결과값에는 "" .. Algorithm/Java 2023. 1. 19. HashMap 빈배열 첫번째, 마지막 요소를 키와 값으로 하는 HashMap 생성하기 P: 배열(arr)을 입력받아서 첫번째 요소와 마지막요소를 키값으로 뽑아서 HashMap리턴해보기. Q: 수도코드: // 빈HashMap을 생성해보기// 배열이 빈배열일 경우를 생각해보기 -> return null;// 배열의 0, length-1 을 뽑아서 키값에 put하기. -> if (arr.length ==0) return null; // 빈 배열을 입력받으면 null을 출력해주기.HashMap result = new Hashmap(); // 빈 hashmap 생성result.put(arr[0], arr[arr.length-1]); // 컬렉션 프레임워크중 MAP을 활용해서 매서드 put(Object key, Object value)를 활용. **(put 매서드는 주어진 키로 값을 저.. Algorithm/Java 2023. 1. 12. 자바에서 Void?? [Missing return statement 계속 뜨는 이유] 최근에 Intellij에서 간단한 계산기를 만들다가 이런 오류가 떴다,, Missing return statement.System.out.println("첫번째 숫자를 입력하세요.");String str1 = input.nextLine();System.out.println("사칙연산 기호 중 하나를 입력하세요.");String oper = input.nextLine();System.out.println("두번째 숫자를 입력하세요.");String str2 = input.nextLine();double First_numb = Integer.parseInt(str1);double Second_num = Integer.parseInt(str2);double result;if (oper.equals("+".. Algorithm/Java 2022. 12. 27. 코딩 테스트 JAVA 변수, 타입, 문자열 기초 틀린문제 오답노트. 문제 1 [문자열을 인자로 받는다의 의미]문자열을 인자로 받아서 느낌표를 붙여서 리턴해주는 메서드 returnWordWithJoy가 있습니다. 메서드 returnWordWithJoy의 첫 번째 인자로 문자열 "I love coding"을 넣어서 호출하고, 그 결과값을 변수 word에 할당하세요. 코드:public class Solution { public String invoke() { String word; //여기에 코드 적기! return word; } public static String returnWordWithJoy(String str) { if(str.equals("")) return "empty value"; else retu.. Algorithm/Java 2022. 12. 22. 이전 1 다음