알고리즘/TIL 6

[BOJ] 99클럽 코테 스터디 12일차 TIL : 7569-토마토-BFS

문제백준 토마토  | 골드 5#그래프 이론 #그래프 탐색 #너비 우선 탐색https://www.acmicpc.net/problem/7569 📌 문제 탐색하기보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 것 → 익어짐1 : 익은 토마토0 : 익지 않은 토마토-1 : 토마토가 들어있지 않음상하좌우, 앞, 뒤 여섯 방향에 영향을 줄 수 있다.며칠이 지나면 다 익게 되는지 최소 일수를 확인한다.단, 저장될 때부터 모든 토마토가 익어 있으면 0 출력토마토를 모두 익히지 못하는 상황일 경우 -1 출력 📌 알고리즘 선택최소한의 일수로 모든 토마토가 익어야하므로 DFS/BFS로 완전탐색을 진행할 수 있다.현재 상자의 크기, 상자의 수가 최대 100, 100, 100이므로 최대 10 ^ 6이 ..

알고리즘/TIL 2024.11.08

[BOJ] 99클럽 코테 스터디 9일차 TIL : 7562-나이트의 이동-BFS

문제백준 나이트의 이동  | 실버 1#그래프 이론 #그래프 탐색 #너비 우선 탐색https://www.acmicpc.net/problem/7562 문제 탐색* 나이트가 한 번에 이동할 수 있는 칸에 따라 이동해서 목표지점에 몇번만에 갈 수 있는지* 최소로 움직이는 경우를 고르는 것이므로 BFS로 풀 수 있음  코드 설계1. 문제의 입력 받기 (BufferedReader, StringTokenizer)2. x, y 변수를 담을 Point 클래스 구현3. bfs 로직 구현    canGo로직 구현 (움직였을 때, graph 내부에 존재하는지)4. 예제 출력을 StringBuilder로 받아서 메모리 줄이기  시도 회차 수정 과정1회차* 처음에 횟수 세는 부분을 빠트려서 graph 배열을 새롭게 만들었다. 2..

알고리즘/TIL 2024.11.05

99클럽 코테 스터디 5일차 TIL : BFS

문제백준 알고리즘 수업 - 너비 우선 탐색 1  | 실버 2#그래프 이론 #그래프 탐색 #정렬 #너비 우선 탐색https://www.acmicpc.net/problem/24444 풀이 & 코드* 전형적인 BFS 문제* 문제에서 list 내부의 숫자들을 '오름차순'으로 관리한다 했으므로, Collections.sort를 진행해준다* 1,2,3,4,5 가 예시일 경우, 답변은 1이 언제, 2가 언제 등 각 노드가 언제 연결되는지를 결정해줘야 하므로 visited 배열에 cnt로 체킹해준 값을 넣어준다. import java.util.*;import java.io.*;public class q24444 { static int n,m,r = 0; static List> graph = new Array..

알고리즘/TIL 2024.11.01

99클럽 코테 스터디 4일차 TIL : DFS

문제백준 알고리즘 수업 - 깊이 우선 탐색 1  | 실버 2#그래프 이론 #그래프 탐색 #정렬 #깊이 우선 탐https://www.acmicpc.net/problem/24479 풀이 & 코드* 전형적인 DFS 문제* 문제에서 list 내부의 숫자들을 '오름차순'으로 관리한다 했으므로, Collections.sort를 진행해준다* 1,2,3,4,5 가 예시일 경우, 답변은 1이 언제, 2가 언제 등 각 노드가 언제 연결되는지를 결정해줘야 하므로 visited 배열에 cnt로 체킹해준 값을 넣어준다. import java.io.*;import java.util.*;public class Main { static int[] visited; static List> graph; static int..

알고리즘/TIL 2024.11.01

99클럽 코테 스터디 3일차 TIL : 이분탐색

문제프로그래머스 입국심사  | LEVEL 3#이분탐색 #수학https://school.programmers.co.kr/learn/courses/30/lessons/43238 풀이 & 코드* 각 심사관 별 심사시간이 담긴 times 배열 오름차순 정렬    * left = 0초(최소)    * right = times[times.length-1] * (long) n 초 (최대 n명 * 가장 오래걸리는 시간) * 이분탐색 while로 진행    * mid = left + right / 2    * mid일때, 각 심사대 별로 주어진 시간동안 몇명 심사할 수 있는지 count      ex) mid = 30 times[7,10] ⇒ 30/7 + 30/10 = 7 * count한게 n보다 작을 경우 = answ..

알고리즘/TIL 2024.10.30

99클럽 코테 스터디 2일차 TIL : 이분탐색

문제백준 11561번  | 실버 3#이분탐색 #수학https://www.acmicpc.net/problem/11561 풀이 & 코드처음에는 문제 이해가 안가서, 징검다리가 1개 있는 경우부터 ~ 13개 있는 경우까지 직접 계산해봤다.예를 들어, 징검다리가 13개인 경우는 1번, 4번, 8번, 13번을 건너 총 4개의 징검다리를 건너고 이의 거리는 1 3 4 5가 된다. * 문제에서 N은 10^16이라 주어졌기에, 일반적인 int로 풀면 타임아웃이 발생할 것 같아, long으로 표현했다.* 두 번째 점프부터 이전 점프 + 1 ~  를 점프한다는 점에서 등차수열을 떠올림* 등차수열의 합 공식 = (n * (n+1)) / 2* 결국, 마지막 N번째 징검다리 이전에 최대한 많은 징검다리를 건너야 하므로, N 이..

알고리즘/TIL 2024.10.29