반응형

알고리즘 37

[백준] 1446 : 지름길 [JAVA] 실버1

문제 풀이 설명 (summary)DP (동적 계획법, Dynamic Programming), Bottom-Up 활용피보나치 수열 풀이처럼 접근 문제 풀이 접근법가중치가 있는지 확인 풀이 코드 (Code)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { static int testCase; static int destination; static int[] P; static List shortcuts = new ArrayList(); public static void main(String[] args) ..

[백준] 13549 : 숨바꼭질 3 [JAVA] 골드5

문제 풀이 설명 (summary)Node 클래스를 만들어서 index 를 변수로 사용하여 Deque 로 활용또는 우선순위 큐를 사용 문제 풀이 접근법최단거리를 찾아야 하기 때문에 BFS로 접근우선 순위 큐와 같이 자동정렬 함으로써 index 가 낮은걸 먼저 처리하도록 처리Deque 활용 또는 우선순위큐 사용 풀이 코드 (Code)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayDeque;import java.util.Deque;import java.util.PriorityQueue;import java.util.StringTokenizer;public c..

[백준] 13549 : 숨바꼭질 3 [JAVA] 골드5

문제 풀이 설명 (summary)Node 클래스를 만들어서 index 를 변수로 사용하여 Deque 로 활용또는 우선순위 큐를 사용 문제 풀이 접근법최단거리를 찾아야 하기 때문에 BFS로 접근우선 순위 큐와 같이 자동정렬 함으로써 index 가 낮은걸 먼저 처리하도록 처리Deque 활용 또는 우선순위큐 사용 풀이 코드 (Code)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayDeque;import java.util.Deque;import java.util.PriorityQueue;import java.util.StringTokenizer;public c..

[백준] 2468 : 안전영역 [JAVA] 실버1

문제 풀이 설명 (summary)2차 배열에 주어진 조건으로 맵 구성방향에 따라 queue 에 추가하고 방문한 위치는 방문 여부 체크안전 영역의 개수를 구하는 문제 모든 위치에서 시작해서 종료될 때마다 카운트최종 카운트 출력 문제 풀이 접근법너비우선 탐색 (BFS) 삽입 (add) / 삭제 (poll) : 먼저 들어온 데이터가 먼저 나가는 구조FIFO (First In, First Out) 풀이 코드 (Code)public class Main { static boolean[][] visited; static int size; static int[][] map; static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, 1, 0, -1}; ..

[백준] 4195 : 친구네트워크 [JAVA] 골드2

문제 풀이 설명 (summary)유니온 파인드 활용여러 개의 원소가 있을 때, 이 원소들이 같은 집합에 속해 있는지 여부를 빠르게 판단서로 다른 집합을 하나로 합치는 연산을 효율적으로 수행 문제 풀이 접근법매번 테스트 케이스마다 네트워크 활성화 된 친구를 어떻게 계산할지 (key)각 노드별로 크기를 key를 이용해 저장해놓고 union 합산할 때 key도 더해줌 숫자가 아닌 문자열을 어떻게 배열로 관리할 지 (key)hashMap을 통해 문자열마다 value (-parent key) 값을 할당해서 필요할 때 꺼내씀  풀이 코드 (Code)public class Main { static int[] parents; static int[] sizes; // 각 집합의 크기 static Hash..

[알고리즘] 유니온파인드 (Union-Find)

주제유니온 파인드 설명유니온-파인드(또는 Disjoint-Set)는 서로소 집합(Disjoint Sets)을 효율적으로 관리하는 자료 구조로, 주로 그래프에서 연결성 문제를 해결하는 데 사용됩니다. 이 기법은 다음 두 가지 핵심 연산을 기반으로 작동합니다:Find (루트 찾기): 원소가 속한 집합(트리)의 대표자(루트 노드)를 찾습니다.경로 압축(Path Compression)을 통해 트리의 깊이를 줄여 이후 연산을 더 빠르게 수행할 수 있도록 최적화합니다.Union (집합 병합): 두 집합을 하나로 병합합니다.크기(Size Union) 또는 랭크(Rank Union)를 기준으로 병합하여 트리의 깊이를 최소화합니다.각각의 리스트에서 각각의 루트노드를 가지고 있는데 필요에 따라 병합해서 루트노드를 공유해서..

백준 알고리즘 [해시, BFS] 퍼즐_1525_골드2

문제백준 알고리즘 [백트래킹] N과 M (2)_문제번호_난이도 체감 난이도골드1 문제 풀이 소감 BFS & HashMap을 이용해서 적절한 사용 코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder start = new StringBuilder(); // 퍼즐 초기 상태 입력받기 for (int i = 0; i visited = new H..

알고리즘/Hash 2024.12.12

알고리즘 기법 [메모이제이션]

기법메모이제이션 체감 난이도골드 3 설명HashMap에 있으면 꺼내서 계산식에 사용없다면, 계산해서 저장  장점메모이제이션한번 계산한건 저장해두고 필요할 때 꺼내쓸 수 있는 것여러번 계산이 필요할 때, 시간을 단축시킬 수 있다.  코드import java.util.HashMap;public class MemoizationExample { static HashMap memo = new HashMap(); public static int fibonacci(int n) { // 1. 메모에 값이 있으면 반환 if (memo.containsKey(n)) { return memo.get(n); } // 2. 기본 케이스 ..

백준 알고리즘 [백트래킹] 나는야 포켓몬 마스터 이다솜_1620_실버4

문제일단 네가 현재 가지고 있는 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습을 하도록 하여라. 나의 시험을 통과하면, 내가 새로 만든 도감을 주도록 하겠네. 체감 난이도실버 5 문제 풀이 소감문제만 길고.... 쉬움 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.StringTokenizer;/** * */public class Main { static int N,M; static HashMap HashA = new HashMap(); ..

알고리즘/Hash 2024.12.01

백준 알고리즘 [해시] 문자열집합_14425_실버5

문제백준 알고리즘 [백트래킹] N과 M (2)_문제번호_난이도 체감 난이도실버 5 문제 풀이 소감쉬움... 완벽하게 일치하는 문자열만 찾기 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashSet;import java.util.StringTokenizer;/** * 총 N개의 문자열로 이루어진 집합 S가 주어진다. * 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는것은 몇개인가 */public class Main { static int N,M; static HashSet HashA = new HashSet(); static..

알고리즘/Hash 2024.12.01
반응형