본문 바로가기

알고리즘22

[프로그래머스 연습문제 level_3 ] 네트워크 처음 생각 무조건 dfs 다. 내가 푼 방법 class Solution { static int[] visited; static int N = 0; static int[][] Computers; public int solution(int n, int[][] computers) { int answer = 0; visited = new int[n]; Computers = computers; N = n; for(int i=0; i 2023. 11. 16.
[알고리즘] DFS - 재귀호출, 스택(Stack) 1. 재귀호출 사용 import java.util.*; public class Main { static final int Max_N = 10; static int N, E; static int[][] Graph = new int [Max_N][Max_N]; // 노드,간선 정보를 이중배열에 담아둠 static boolean[] Visited = new boolean[Max_N]; // 노드 방문 여부를 확인하기위함 public static void main(String[] args){ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLi.. 2023. 11. 3.
[Sofreer 문제풀이] Lv.2(장애물 인식 프로그램) feat. Java 1. 장애물 인식 프로그램 import java.io.*; import java.util.*; public class Main { static class Point{ int row, col; Point(int r, int c){ row = r; col = c; } } static int[][] D = {{-1,0},{1,0},{0,-1},{0,1}}; // 행/열 위,아래,왼,오 static int N; static int[][] board; static int cntBlock = 0; static ArrayList arrCnt = new ArrayList(); static int blockNum; static boolean[][] visited; // dfs 함수 static void dfs(int r.. 2023. 11. 2.
[알고리즘] 동적 계획법 (DP; Dynamic Programming) 왜 필요할까? 동적 계획법은 이미 진행되었던 연산이 불필요하게 다시 반복되는 비효율성을 보완하기 위해 만들어졌다 새로운 연산을 기록하고, 이미 진행되었던 연산은 기록에서 불러오는 식이라고 이해하면 된다 개념 이때 기록에 사용되는 개념이 '메모이제이션(Memoization)' 인데, 연산의 결과를 저장해두고 필요할 때 꺼내쓰는 공간이라고 이해하면 된다 동적 계획법은 Top-Down 과 Bottom-Up 두 가지 진행 방법이 있는데, Top-Down 은 문제를 해결하는 진행 과정이 위에서 아래로 진행되는 것을 의미하고 Bottom-Up 은 그 방향이 아래에서 위로 진행되는 것을 의미한다 예시 아래는 동적 계획법을 이용한 알고리즘 문제 풀이 예시이다 2021.10.19 - [백준 풀이] - [백준 풀이_Jav.. 2021. 10. 20.