[백준 2056번] 작업 URL 1. 시간을 갱신해주는 부분이 핵심 포인트이다.2. A라는 노드로부터 B라는 노드로 이동할 때, B의 작업시간과 A의 작업시간 + B의 작업시간을 비교해야 한다.3. A+B의 작업시간이 더 클 경우 해당 값으로 갱신해줘야 한다. [소스 코드] 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889import java.io.BufferedReader;import java.io.IOException;import java.io.Inp..
[백준 1766번] 문제집 URL 1. 이 문제는 단순 위상정렬과 거의 같지만, 방문 순서에 따른 제약조건이 존재한다.2. 진입차수가 0인 노드들을 먼저 탐색하기 시작할 때, 그 노드들을 오름차순으로 방문한다.3. 이를 위해서 최소 힙을 사용했다. 최소 힙을 사용하게 되면 자동으로 숫자가 낮은 노드먼저 방문할 수 있다. [소스 코드] 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283import java.io.BufferedReader;import java.io.IOExcept..
[백준 2252번] 줄 세우기 URL 이 문제는 위상정렬을 활용한 문제라기보다....위상정렬 그 자체이므로 이 포스팅에서 설명은 하지않겠습니다.나중에 위상정렬에 대한 내용을 [알고리즘 이론] 카테고리에서 다루도록 하겠습니다. [소스 코드] 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Lin..
[백준 14503번 로봇 청소기 URL] 문제 풀이 방법은, 문제 설명에 나온 그대로 진행하면 된다...설명할게 없다.. 현재 위치를 청소한다.현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다.왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다.왼쪽 방향에 청소할 공간이 없다면, 그 방향으로 회전하고 2번으로 돌아간다.네 방향 모두 청소가 이미 되어있거나 벽인 경우에는, 바라보는 방향을 유지한 채로 한 칸 후진을 하고 2번으로 돌아간다.네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동을 멈춘다. [소스 코드] 1234567891011121314151617181920212..
[백준 14502번] 연구소 1. 벽을 3개 세우기 위해 DFS 완전탐색을 시작한다.2. 중복을 피하기 위해, 현재 시작점으로부터 오른쪽, 아래쪽 방향으로만 탐색을 진행한다.3. 벽을 3개 세웠으면, 그 상태에서 BFS 탐색으로 바이러스를 퍼뜨린다.4. 바이러스를 모두 퍼뜨렸으면, 안전지대를 세서 출력한다. [중복이 발생하는 코드] 12345678910111213141516171819202122232425public static void dfs(int numOfWall, int[][] prev) { int[][] temp = new int[N][M]; for (int i = 0; i
[백준 3190번] 뱀 1. 뱀의 몸통 좌표를 Deque 자료구조를 활용해서 저장한다. 머리를 움직일 때에는 Deque의 first에 추가하고 뱀의 꼬리를 자를 때는 Deque의 last에서 삭제한다. 2. 뱀의 전체 몸통이 차지하는 부분을 체크하기 위해 visited 배열을 선언하고, 뱀의 몸통이 위치한 자리마다true로 체크한다. 3. 현재 이동방향에 따라 머리를 한칸 전진시킨다.1) 머리를 전진시켰을 때, 이미 visited[row][col] = true이면, 뱀의 머리가 뱀의 몸통 중 일부를 만났다는 것이므로 종료한다.2) 머리를 전진시켰을 때, 사과가 있다면 뱀의 꼬리를 자르지 않는다.3) 머리를 전진시켰을 때, 빈칸이라면 꼬리를 자른다.4) 머리를 전진시켰을 때, 벽이라면 종료한다. 4. 현재..
[SWEA 2105번] 디저트 카페 URL 1. N X N의 Map에서, 가능성이 있는 조합을 모두 찾는다. 예를 들어, 4 X 4의 2차원 배열에서 탐색할 수 있는 칸의 조합은 왼쪽아래, 오른쪽아래, 오른쪽위, 왼쪽위 순서로 탐색했을 때 다음과 같다. 1) 왼쪽아래 2칸 // 오른쪽아래 1칸 // 오른쪽위 2칸 // 왼쪽위 1칸2) 왼쪽아래 1칸 // 오른쪽아래 2칸 // 오른쪽위 1칸 // 왼쪽위 2칸3) 왼쪽아래 1칸 // 오른쪽아래 1칸 // 오른쪽위 1칸 // 왼쪽위 1칸 2. 4 X 4 2차원 배열의 어느 지점에서, 1번에서 구했던 각 방향마다의 이동칸수가 가능하다면, 탐색을 시작한다.탐색할 때에는 디저트의 종류는 1부터 100이므로 boolean형 배열을 선언해서 확인한다. [소스 코드]12..
- Total
- Today
- Yesterday
- 우선순위 큐
- 리스트
- 나무 재테크
- 구슬 탈출2
- 정렬
- 탈주범 검거
- 구현
- 최대힙
- 연산자 끼워넣기
- 14888
- 백준
- 트리
- 중간값
- 힙정렬
- 자바
- 힙
- 브루트포스
- 큐
- 최소힙
- 시뮬레이션
- 탐색
- 알고리즘
- 삼성
- 영역 구하기
- 배열
- DFS
- 알고스팟
- BFS
- SWEA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |