[프로그래머스] 86971 전력망을 둘로 나누기 - JAVA - Lv2
·
알고리즘/문제풀이
[프로그래머스] 86971 전력망을 둘로 나누기 - JAVA - Lv2문제https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 분석조건하나의 트리형 전력망이 있다 (노드 + 간선)전선을 하나 끊어서 두 개의 네트워크로 나눌 수 있는데 이때 두 네트워크의 노드 수 차이를 최소로 만들어 차이를 출력풀이방법트리를 입력받은 후 간선마다 돌아가며 DFS를 수행하면 된다.하나의 트리로 연결되어있고, 전체 노드의 수를 알고 있으므로 간선의 두 노드 중 하나에서만 DFS를 돌리면 나머지 네트워크의 노드 수도..
[프로그래머스] 43165 타겟 넘버 - JAVA - Lv.2
·
알고리즘/문제풀이
[프로그래머스] 43165 타겟 넘버 - JAVA - Lv.2문제https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 분석조건자연수 배열이 주어지면 배열의 각 수를 더하거나 빼서 타겟 넘버를 맞추는 문제이다.풀이방법재귀 함수를 사용하는 DFS를 사용하여 문제를 해결한다.코드class Solution { public static int TG; public static int SIZE; public static int answer; public int solution(..
[백준/BOJ] 2606 바이러스 - JAVA - 실버3
·
알고리즘/문제풀이
[백준/BOJ] 2606 바이러스 - JAVA - 실버3문제https://www.acmicpc.net/problem/2606문제 분석조건네트워크로 연결된 컴퓨터들 사이에서 1번 컴퓨터와 연결된 컴퓨터의 수를 구하는 문제이다.풀이방법많은 문제를 BFS를 활용하며 해결하므로 DFS를 통해 문제 해결을 해보았다.DFS를 구현하여 문제를 해결할 수 있는데 1번 노드를 제외한 연결된 노드의 수를 출력하므로 마지막에 `-1`를 해주었다.코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { static boolean[][] graph..
[백준/BOJ] 1520 내리막 길 - JAVA - 골드3
·
알고리즘/문제풀이
[백준/BOJ] 1520 내리막 길 - JAVA - 골드3문제https://www.acmicpc.net/problem/1520문제 분석조건왼쪽 위에서 시작하여 오른쪽 아래로 이동하는 것이 목표현재 숫자보다 작은 인접한 숫자로만 이동할 수 있음가능한 경로의 수를 출력풀이방법DFS를 이용하여 경로를 탐색하며 DP를 이용하여 방문했던 점엔 다시 방문하지 않는 방법을 이용했습니다.DP 테이블을 -1로 초기화 한 뒤 출발지점부터 탐색을 시작현재 좌표에 이미 방문을 했으면 현재 좌표의 DP값을 반환하고, 첫 방문(-1)일 시 0으로 DP값을 업데이트DFS 탐색을 시계방향으로 했을 때 아래와 같은 상황이 된다.방법을 반복하여 목표 지점에 도달하였을 경우 1를 반환하고 이를 이전 좌표 DP값에 업데이트 한다.DP값을 ..