본문 바로가기

Algorithm/BFS & DFS9

[백준] 17142번 : 연구소3 (C++) (삼성 SW 기출) https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 브루트포스와 BFS 알고리즘을 사용하여 구현하였다. 맨 처음에 문제를 읽고 구현자체가 어려울 것 같진 않았지만, 테스트 케이스를 돌리다보니 예외처리와 효율성을 고려하는게 빡셌던 것 같다. (덕분에 디버깅만 거의 2시간 한것 같다ㅎㅎ) 애를 먹었던 부분은 "활성 바이러스가 비활성 바이러스가 있는 칸으로 가면 비활성 바이러스가 활성으로 변한다." 라는 조건이었다. 좀더 풀어서 설명해보자면, 비활성화된 바이러스.. 2021. 9. 3.
[백준] 1303번 : 전쟁 (C++) https://www.acmicpc.net/problem/1303 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는 www.acmicpc.net 자주 나오는 유형으로, DFS를 이용하여 간단히 구현하였다. 설명은 생략 :) #include using namespace std; int N, M,W,B; char map[100][100]; int visit[100][100]; int dx[4] = { 0,0,1,-1 }; int dy[4] = { 1,-1,0,0 }; int tmp; void solve(int x, i.. 2021. 8. 25.
[백준] 2251번 : 물통 (C++) https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net 이 문제는 BFS(너비우선탐색)으로 풀었다. 우선, 3가지 물통으로 물을 부을 수 있는 방법은 총 6가지로 각 물통을 0,1,2라고 했을 때 다음과 같다. 0 -> 1 0 -> 2 1 -> 0 1 -> 2 2 -> 0 2 -> 1 From[i] -> To[i] 핵심은 물의 총 양은 고정되어 있고 맨 처음 세번째 입력으로 주어지기 때문에, 첫번째 물통과 두번째 물통의 물의 양만 .. 2021. 8. 19.