토마토익은 토마토의 좌표를 Queue에 저장.Queue에서 익은 토마토 좌표를 꺼내서 상,하,좌,우,위,아래 방향을 갈 수 있는지 없는지 검사.갈 수 있다면, 이전 토마토 값에서 1 증가.총 반복 수를 알아내기 위함.다음을 Queue가 빌 때까지 반복.
최소비용 구하기다익스트라 알고리즘의 기본 방법을 사용하는 문제였다.다익스트라(Dijstra) 알고리즘은그래프의 최단 경로를 구하는 알고리즘하나의 정점에서 다른 모든 정점까지의 최단 거리를 구해준다.음수 가중치는 처리하지 않는다.PriorityQueue를 사용하면 시간
특정 거리의 도시 찾기BFS 를 이용한 최단 경로 찾기 문제 중 가장 기본 문제인 것 같았다.최단 경로 찾기에서 딱히 추가 옵션이 없어서 간단하게 구현 가능했다.최단 경로 찾기 문제에서는 이전 거리에서 경로의 비용을 더해준다고 생각하는게 중요하다.물론 이 문제는 다익스
미로 탐색대표적인 BFS문제 미로 탐색 문제였다.dx, dy를 통해서 좌표 접근을 하고, BFS로 최단 거리를 탐색하면 된다.살짝 막혔던 부분이 있었는데,최단 거리를 어떻게 계산할까 되게 복잡하게 생각하고 있었다.근데 풀이 방법은 간단하게 다음 이동 경로에 기존의 값에
빙산머리로는 어떻게 구현할지 쉽게 생각한 문제였다.먼저주어진 빙산이 두 덩어리로 분리되는지 확인한 덩어리라면 녹인다(1년 지남).만약 두 덩어리로 나누어지면 녹인 횟수를 출력.끝까지 나누어지지 않는 경우라면 0을 출력중요한 알고리즘은 DFS를 통해 이웃한 빙산을 탐색을
연산자 끼워넣기대표적인 백트래킹 문제였다.숫자와 연산자를 배열에 저장해서 dfs로 완전탐색 하면 되는 간단한 문제였다.물론 나는 고민해도 생각이 나지않아서 여러 블로그를 참고해서 이해한 경우이다..코드를 디버깅으로 하나하나 어떻게 동작하는지 파악해서 백트래킹을 이해했다
아침 산책이번 문제는 다음과 같이 서브태스크 문제로 총 200점을 달성해야 해결되는 문제이다.먼저 108점으로 실패한 풀이를 설명하고 200점으로 성공한 풀이를 설명하겠다..먼저 문제 예제를 먼저 살펴봤다.1 - 3,43 - 1,44 - 1,3,55 - 4이렇게 총 8
유기농 배추이 문제는 백준을 접한지 얼마 안됐을 때, 무작정 풀려고 했다가 실패한 문제였다.이제와서 보니 그래프 탐색 문제였고, 좌표 또한 이용해야 했다.시뮬레이션 문제, 그래프 탐색 문제도 접해봤기에 좀더 쉽게 접근할 수 있던 문제였다.최종 풀이 방법은DFS를 이용했
이분 그래프이분 그래프를 구현하는 문제였다.우선 이분 그래프가 무엇인지 이해해야 한다.참고 블로그 (이해를 위한 설명과 사진 참조)https://www.ksakosmos.com/post/%EA%B7%B8%EB%9E%98%ED%94%84-%EC%9D%B4%EB%
트리의 부모 찾기이번 문제는 DFS를 약간 변형하는 문제였다.DFS를 정확히 알고있다면 간단한 문제였다.DFS는 깊이 우선 탐색으로 루트 노드에서부터 순차적으로 탐색에 들어가는데, 재귀 함수로 구현된 DFS에서 자식 노드로 탐색에 들어가기 전에 부모 노드를 저장해주면
최소 스패닝 트리우선 기본 지식을 알아 보겠다.원래 그래프의 정점 전부와 간선의 부분 집합으로 구성된 부분 그래프스패닝 트리에 포함된 간선들은 정점들을 트리 형태로 전부 연결해야 함.(간선들이 사이클을 이루지 않아야 함.)주어진 그래프의 모든 정점들을 연결하는 부분 그
이진 검색 트리전에 풀어봤던 트리 순회의 변형 문제 같은 느낌이였다. '트리 순회' 문제에서 트리 구조를 확실히 이해하고 넘어왔기 때문에 이번 문제는 상당히 쉬웠다.노드의 왼쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 작다.노드의 오른쪽 서브트리에 있는 모든 노
DFS와 BFS그래프 탐색의 가장 대표적인 DFS와 BFS를 구현하는 문제였다.구현 방법은 정점을 인접 행렬에 저장하고 DFS는 재귀를 통해 쉽게 구현했고, BFS는 Queue를 이용해서 구현했다.다른 블로그를 찾아봐도 이렇게 구현하는 것이 대표적인 구현 방법 인 것
트리 순회이번 문제는 이진 트리의 3가지 순회 방법을 구현하는 문제였다.트리의 기본 지식은 알기 때문에 설명은 생략했다.이진 트리는 '모든 노드의 최대 차수를 2로 제한한 것' 이다.전위, 중위, 후위 순회의 특징만 안다면 쉽게 구현할 수 있다.잘 정리된 블로그를 참고
철도 풀이 방법 우선 좌표가 (-100,000,000 ~ 100,000,000) 이기 때문에 그냥 무작정 찾아버리면 시간초과에 걸리기 마련이다. 그래서 시간복잡도가 $O(logN)$ 인 우선순위 큐를 사용해서 탐색을 진행한다. 내 구현을 크게 표현하면 시작을
절댓값 힙이번 문제는 PriorityQueue의 정렬을 간단하게 변경해보는 문제였다.comapreTo 메서드를 오버라이딩해서 두 값의 절대값이 같을 때는 오름차순으로 정렬해주고, 다를 때는 절대값의 크기 순으로 정렬해주는 간단한 문제였다.참고 블로그 : https&#x
가운데를 말해요숫자가 주어질 때 마다 숫자들의 중간 값을 구해야 한다.처음에 접근을 PriorityQueue를 다시 구현해야 하나? 아니면 Comparator를 오버라이딩 해야되나? 고민했다.그렇기엔 너무 복잡했다. 결국 다른 분들의 풀이를 보고 왼쪽은 maxHeap으
최대 힙이번엔 자료 구조인 최대 힙을 구현하는 문제였다.우선 먼저 알고 있어야 할 지식으로힙 (Heap)완전 이진 트리의 일종으로, 우선순위 큐를 위하여 만들어진 자료구조이다.최대 값, 최소 값 찾기에 효과적이다.우선순위가 가장 높은 데이터가 제일 앞(루트)에 위치한다
뱀우리가 잘 알고있는 지렁이 게임(?)을 구현해보는 문제였다.시뮬레이션 문제는 처음 풀어봤는데, 생각보다 쉽지 않았다.하지만, 유형만 잘 이해해 놓는다면 다음엔 조금 더 쉽게 풀수 있을 것 같았다.!문제에서 주어진 규칙을 차근차근 읽고 구체적으로 구현해야 했다.이 문제
요세푸스 문제 0이번 문제도 큐의 기본적인 활용을 묻는 문제였다.요세푸스 순열을 구하는 방법은 k 번째 사람을 제거하고, 그 자리에서 k 번째 사람을 계속 제거해 나감으로써 제거되는 순서를 출력하면 되는 간단한 문제였다.큐를 사용하면 쉽게 해결할 수 있었다.이제 백준의