[백준] 2178번 - 미로 탐색(BFS)
·
PS
최단거리를 구하는 문제 ... -> BFS 사용!  BFS 처리하는 과정1. 시작 노드 A를 방문한다.- 시작 정점을 방문하여 방문 표시 한 후 해당 노드를 enqueue 한다. 2. 큐에서 첫번째 정점을 제거하고 제거된 정점과 인접한 정점에 대하여 방문하지 않은 정점을 방문한다.- 큐에서 꺼낸 노드를 방문한다.- 이 노드와 인접하는 노드들을 모두 방문한다.- 인접한 노드가 없으면 큐의 맨 앞에서 노드를 꺼낸다. 3. 큐가 소진될 때까지 위 과정을 반복한다.   앞서 DFS로 풀었던 2667번과 비슷하게 풀 수 있는 유형이라 어렵지 않게 풀 수 있었던 것 같다! package 백준.dfs_bfs;import java.io.BufferedReader;import java.io.IOException;impo..
[백준] 2667번 - 단지 번호 붙이기 (DFS)
·
PS
모든 단지를 방문해야 함! -> DFS를 사용한다.  static boolean isVisited[][]; static int arr[][]; static int count = 0, number = 0; static int nowX, nowY, N; static int dirX[] = {0, 0, -1, 1}; static int dirY[] = {-1, 1, 0, 0}; dirX, dirY는 각각 좌우, 상하의 좌표 범위를 판단 할 수 있게 하기 위한 배열이다.nowX, nowY는 현재의 범위를 계산한 좌표이다.  public static void DFS(int x, int y) { isVisited[x][y] = true; arr[x][y] =..
[백준] 1931번 - 회의실 배정
·
PS
그리디 알고리즘 문제 ....최대한 많은 회의를 하기 위해서는 회의 종료 시간이 빨라야 한다!서로 겹치지 않는 활동에 대해 종료시간이 빠르면 더 많은 활동을 선택할 수 있는 시간이 많아진다.-- > 종료 시간을 기준으로 정렬! BufferedReader를 사용하여 풀이하였다.comparator를 재정의하여 종료 시간이 같은 경우 시작 시간을 기준으로 오름차순 정렬,그 외에는 종료시간을 기준으로 오름차순 정렬이 이루어지도록 하였다.  package 백준.greedy;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Compa..
[백준] 1542번 - 잃어버린 괄호
·
PS
그리디 알고리즘 관련 문제!접근이 어려워서 다른 분의 풀이를 참고하였다 ....정리해보려고 한다!   예시 )1 + 2 - 3 + 4 - 5 + 6 + 7 + 8 - 9 + 10 위의 식에서 최소값이 되게 하는 경우는 다음과 같이 괄호를 지정했을 때 이다. 1 + 2 - (3 + 4) - (5 + 6 + 7 + 8) - (9 + 10) 최소값이 되기 위해서는 "-" 기호 이후에 차감을 하는 숫자가 최대한 커지도록 해야 한다.따라서 - 이후에는 + 로 연산되는 모든 숫자를 더하고 그 뒤에 빼주는 방식으로 문제를 해결할 수 있다.  1. 먼저 -를 기준으로 나누어 준다!2. + 를 기준으로 나누어 더한다.3. 결과를 list에 저장한다.4. 리스트의 가장 첫 수는 미리 더해준다.5. 그 다음 수부터 뺄셈을 ..
[백준] 11047번 동전 0
·
PS
그리디 알고리즘 문제 !동전개수의 최솟값을 구해야 하므로, 큰 단위부터 비교하기 위해입력받은 배열을 내림차순 정렬 하였다.  1차 제출package 백준.greedy;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Collections;public class baekjoon_11047 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(S..
[백준] 2504번 - 괄호의 값
·
PS
스택을 활용해서 풀 수 있는 문제!괄호 관련된 문제는 스택으로 풀 수 있는 것 같다. char형을 담을 stack을 선언한다. 1. '(' 를 만날 때계수에 2를 곱한 후, '('를 stack에 push 한다. 2. '{' 일 경우계수에 3을 곱한 후, '{'을 stack에 push 한다. 3. ')' 일 경우stack에서 괄호를 뻄 (pop)계수를 2로 나눈다.- stack이 비어있거나 stack의 가장 위에 있는값이 '(' 이 아닐경우올바른 입력이 아니므로, 반복문을 탈출한다.- i-1번째 인덱스 문자열이 '(' 인 경우 sum에 계수(num)를 더한다. 4. ']' 인 경우stack에서 괄호를 뺌 (pop)계수를 3으로 나눈다.- stack이 비어있거나 stack의 가장 위에 있는값이 '[' ..
[백준] 2751번 - 수 정렬하기 2 (시간 초과)
·
PS
package 백준.정렬;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class baekjoon_2751 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] arr = new int[N]; for (int i = 0; i arr[j]) { ..
[백준] 16564 - 히오스 프로그래머
·
PS
이분탐색 알고리즘 문제! 이분탐색 문제를 풀 떄 가장 먼저 찾아야 하는 조건은, 범위를 특정할 수 있는 최댓값과 최솟값이다.문제의 조건에 따라3 10102015 입력에서 10 이하의 수를 분배하였을 때 나올 수 있는 가장 높은 값은 30, 낮은 값은 10이 된다.따라서 이진탐색 함수에서min = levels[0] (정렬 기준)max= levels[N-1] + K 로 설정하여 구할 수 있다. public static int binarySearch(int[] arr, int target, int min, int max) { int result = 0; while (min 0) { count += mid - i; } ..