본문 바로가기

BFS4

[백준] 2636 - 치즈 (Python) 문제 출처 : www.acmicpc.net/problem/2636 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 문제 풀이 : 이 문제를 풀때 본인이 생각하기에 중요한 점은 공기에 접촉한 치즈와 접촉하지 않은 치즈를 구분하는 점이라고 생각한다. 우선 각 맵에 있는 치즈를 다 세주었고, 또한 맨 끝에 있는 벽들은 값을 2로 바꿔서 벽을 체크해주었다. 이후 공기와 접촉한 치즈 하나를 입력으로 받아서 BFS탐색을 하며 공기와 접촉 된 치즈를 체크해 주었다. 이때 공기와 접촉하지 않는 경우에 대한 condition 을 따로 체크해주었.. 2021. 3. 12.
[백준] 7569 - 토마토 (C++) 문제 출처 : www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 문제 풀이 : 지난번에 푼 토마토 문제(문제번호를 보면 다른 문제다 !)와 매우 흡사한 문제다. 다른점은 그냥 3차원으로 확장했다는 것인데 사실 3차원으로 확장한다해도 결국은 컴퓨터에겐 3차원의 개념이 없다는 점에서 index만 잘 고려해 준다면 크게 어려울 것이 없다. 지난번 토마토 문제에서와 바뀐점은 그냥 h(높이 부분)에 해당되는 움직임만 추가해주고 전체 로직은 똑같다.. 2021. 3. 9.
[백준] 7576 - 토마토 (Python) 문제 출처 : www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 풀이 : BFS로 문제를 풀었다. 다른 문제들도 그렇지만 (미로탐색 문제라던지 앞에 풀었던 다른 BFS문제들 처럼) 이 문제와 같이 일련의 단계를 끝내고 시간, 횟수를 +1 하는 경우에는 나는 대부분 deque(혹은 stack) 자료 구조를 2개 를 사용한다. 각각을 1번 ,2번 dq라고 본다면 1번 dq에 대한 while문 , 2번 dq에 대한 while문을 작동 시킨다. .. 2021. 3. 9.
[백준] 17142 - 연구소3(Python) 문제 출처: www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 문제 풀이: 삼성 기출은 대부분 BFS, DFS, 구현으로 끝나는 거처럼 이 문제 또한 구현이다. 핵심이 되는 부분은 "활성 바이러스가 비활성 바이러스가 있는 칸으로 가면 비활성 바이러스가 활성으로 변한다."라고 쓰여있는 부분이라고 생각한다. 활성 바이러스가 비활성 바이러스가 있는 칸으로 넘어갈 때는 1초의 시간이 걸리지만 실제로 비활성 바이러스도 바이러스로 치기 때문에 비활성 바이러스를 굳이 활성화시키지 .. 2020. 10. 11.
반응형