Algorithms 33

백준 12891: DNA 비밀번호 (java)

알고리즘 Sliding Window 체감 난이도 ★ ★ ★ ☆ ☆ 다시 풀 수 있는가? YES [백준] 12891번: DNA 비밀번호 - java (tistory.com) [백준] 12891번: DNA 비밀번호 - java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int s_len; static int p_len; static char[] str; static int[] checkArr = new i jyeonnyang2.tist..

Algorithms/Java 2024.01.29

백준 2178: 미로 탐색 (java)

알고리즘 BFS: 큐 체감 난이도 ★ ★ ★ ★ ★ 다시 풀 수 있는가? NO 1. 공백 없는 문자 받기 charAt(int i) - '0'을 통해 char형의 문자들을 int형으로 변환시킬 수 있다. for (int i = 0; i < N; i++) { String s = br.readLine(); for (int j = 0; j < M; j++) { arr[i][j] = s.charAt(j) - '0'; // 공백 없는 문자 split 해서 받기 } } 2. 큐에 배열 설정 큐에 배열도 저장할 수 있다. 선언할 때는 Queue로 하면 되고, 초기화할 때는 add(new int[] {0, 0}) 이런 형식으로 하면 된다. Queue q = new LinkedList(); q.add(new int[] {..

Algorithms/Java 2024.01.14

백준 1260: DFS와 BFS (java)

BFS는 무난하게 풀었는데, DFS 때문에 이틀 걸렸다. 재귀로 풀면 쉽게 풀리는 문제라고 하지만 재귀를 잘 못해서 익숙한 스택으로 풀려했다. 근데 작은 숫자부터 방문하는 조건을 거는걸 아무리 해도 못하겠어서 오래걸렸고.. 지금도 못풀었다. 서치해서 코드를 봐도 이해가 안돼서 그냥 재귀로 풀었다. 알고리즘 DFS: 재귀 BFS: 큐 체감 난이도 ★ ★ ★ ★ ☆ 다시 풀 수 있는가? YES 1. 양방향 간선 간선이 양방향이므로 이렇게 설정해줬는데 처음 써보는 문법이라 가져왔다. arr[u][v] = arr[v][u] = 1; 2. DFS 방문 조건은 BFS와 같고, 재귀로 호출한다는 것만 다르다. 아무래도 깊이깊이 파고들어야하기 때문에 재귀로 호출하는 것 같다. public void DFS(int x) ..

Algorithms/Java 2024.01.10

백준 2606: 바이러스 (java)

1717번이랑 거의 똑같은 문제인데 못풀었다. 그래서 1717번 포스팅으로 돌아가서 다시 풀 수 있는가 NO로 바꿈.. 그리고 나는 유니온 파인드로 풀었는데 보통 DFS로 많이 푸는듯하다. DFS로 풀면 코드가 좀 더 간결해지는듯하나 속도랑 메모리 차이는 거의 없다. DFS 풀이 https://zzang9ha.tistory.com/40 [백준] 2606번: 바이러스(DFS, BFS) https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 zzang9ha.tistory.com Union-Find 알고리즘 (그림 설명) https..

Algorithms/Java 2024.01.08

백준 1436: 영화감독 숌 (java)

알고리즘 브루트포스 (완전 탐색) 체감 난이도 ★ ★ ☆ ☆ ☆ 다시 풀 수 있는가? YES 1. Integer -> String if (String.valueOf(i).contains("666")) { 전체 코드 ▼ 더보기 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { int cnt = 0; String ans; public void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); for (..

Algorithms/Java 2024.01.07

백준 1018: 체스판 다시 칠하기 (java)

알고리즘 브루트포스 (완전 탐색) 체감 난이도 ★ ★ ★ ★ ☆ -> 난 완탐이 많이 약하다. 완탐+이동 조합이면 답이 없다.. 이 부분을 집중해서 풀어보자! 다시 풀 수 있는가? YES (시간 많이 지나면 NOT SURE) 1. W 시작 체스판 & B 시작 체스판 만들어서 비교하기 뭐 하나 빠진거 찾을 때는 아예 based on 할 배열을 만들어서 비교하는 방법도 있다. 이걸 생각 못해서 어떻게 비교할지 막혔던.. String[][] wStart = { {"W", "B", "W", "B", "W", "B", "W", "B"}, {"B", "W", "B", "W", "B", "W", "B", "W"}, {"W", "B", "W", "B", "W", "B", "W", "B"}, {"B", "W", "B",..

Algorithms/Java 2024.01.02

백준 2210: 숫자판 점프 (java)

알고리즘 그래프: DFS 체감 난이도 ★ ★ ★ ★ ☆ -> 나는 이동 문제에 많이 약한 것 같다 .. 다시 풀 수 있는가? NO 1. 방향 이동 x, y 좌표 상에서 방향을 설정하여 이동하는 문제에서 자주 사용되니 꼭 기억해둘 것! dx -> 상 / 하 dy -> 좌 / 우 기준이다. int[] dx = {-1, 1, 0, 0}; int[] dy = {0, 0, -1, 1}; 2. HashSet 값 추가 과정 cnt가 5라는 것은 6개의 문자열이 다 찼다는 뜻이고, 이렇게 한 묶음을 HashSet에 추가해준다. 모든 탐색이 끝날 때까지 묶음이 HashSet에 추가되고, 나중에 size를 리턴해주면 끝! if (cnt == 5) { ans.add(tmp); return; } 3. 재귀 호출 (중요) 상하..

Algorithms/Java 2023.12.30