목록Algorithm/백준 (21)
Inor
2차원 배열에 위치한 토마토가 4방향(동, 서, 남, 북)으로 퍼지면서 주변에 토마토들이 익어가는 문제 입니다. 전형적인 BFS 문제이라고 판단하였고 BFS를 이용해서 문제를 해결하였습니다. 초기에 입력된 정보에서 토마토의 위치를 큐에 넣어두고 BFS탐색을 시작하였습니다. 토마토가 이미 익었을 경우와 벽이 있는 경우에는 큐에 넣지 않았고 익지 않은 토마토를 큐에 넣고 현재 위치의 토마토가 익은 날짜 +1을 해서 몇일째에 토마토가 익었는지 2차원 배열에 표시하였습니다. 아래는 문제와 소스 코드 입니다. https://www.acmicpc.net/problem/7576 import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu..
연구소에 바이러스가 퍼지지 못하게 3개의 기둥을 세워서 피해를 최소한으로 만드는 알고리즘 문제 입니다. 탐색(BFS, DFS)에대해서 공부해야겠다는 생각을 갖도록 만들었던 문제 입니다. 처음에는 어떻게 접근해야할지 감도 못잡았는데 탐색에대해 공부하니 어렵지 않게 풀 수 있었습니다. 아래는 문제의 링크 입니다. https://www.acmicpc.net/problem/14502 3개의 기둥을 세우는 방법은 재귀 함수를 만들어서 해결 했습니다. 3개의 기둥이 모두 세워졌을때 BFS탐색을 이용해서 벽이 아닌 곳으로 바이러스를 퍼뜨렸습니다. 그리고 바이러스가 퍼진 연구소를 다시 원상 복귀 시키며 바이러스가 퍼지지 않은 부분을 계산하였습니다. 문제를 풀면서 아쉬웠던 부분은 기둥을 세우는 부분의 재귀 함수를 조금 ..
로봇 청소기를 회전 시키며 이동시키고 이동한 구역을 청소하는 방식으로 프로그램이 실행되도록 하는 알고리즘 문제 입니다. 저는 DFS를 이용해서 로봇청소기를 이동 시키려고 했습니다. 그러나 코드를 다 만들고나서 들었던 생각은 이건 DFS는 아니고 그냥 단순히 시뮬레이션으로 만든것 같다는 느낌이 들었습니다. DFS를 사용하려고 했다는 것에 큰 의미를 두겠습니다.. 아래는 문제의 링크 입니다. https://www.acmicpc.net/problem/14503 구현 과정에서 가장 먼저 생각했던 것은 로봇청소기를 회전 시키는 방법과 청소할 구역이 없을때 후진 시키는 방법을 생각하였습니다. 회전의 경우에는 지금 로봇이 바라보고 있는 위치의 값에 따라서 변경해주었습니다. 후진도 마찬가지로 현재 바라보는 방향에서 뒤..