본문 바로가기

ALGORITHM/DFS, BFS

(11)
17267 상남자 https://www.acmicpc.net/problem/17267 17267번: 상남자 CTP의 대표 상남자 영조는 자유롭게 이동하는 것을 좋아한다. 그렇지만 영조는 상남자이기 때문에 위아래로만 간다. 따라서 위, 아래로는 얼마든지 이동할 수 있지만 왼쪽, 오른쪽으로는 이동하 www.acmicpc.net 처음에는 BFS로 단순히 탐색해서 예제가 다 맞길래 제출해봤더니 틀렸습니다! 문제점이 세가지 있었다. 첫번째는 queue가 아닌 deque로 풀어야 한다는 것. 두번째는 오른쪽 왼쪽으로 갈 때 원래의 점 정보의 L, R 값을 함부로 줄이면 안된다는 점 마지막으로 x, y 방향 문제 (이건 아직도 헷갈린다 디버깅해서 겨우 적응) 첫번째 문제는 https://www.acmicpc.net/board/view..
11578 팀원 모집 https://www.acmicpc.net/problem/11578 11578번: 팀원 모집 3번 학생과 4번 학생을 선택하면 1번부터 5번까지 모든 문제를 풀 수 있는 팀을 만들 수 있다. 1번, 2번, 4번 학생을 선택해도 모든 문제를 다 풀 수 있지만 팀원의 수가 3명이라 답이 될 수 없다. www.acmicpc.net 백트래킹은 아니고 브루트 포스 문제 같다. 전체 경우의 수를 다 해봐야 하니 DFS로 전체 탐색 #include #include #include #include #include using namespace std; #define initialize(x, y) memset(x, y, sizeof(x)); int N, M, cnt, min_cnt; int std_solve[11][11]..
11581 구호물자 https://www.acmicpc.net/problem/11581 11581번: 구호물자 서기 2050년 엄청나게 강력한 폭풍이 인천을 강타했다. 강력한 폭풍의 영향으로 모든 사람은 대피소로 대피하였으며, 많은 도로가 유실되었다. 그나마 남아있는 도로도 모든 표지판과 가로등이 www.acmicpc.net 구현방법: DFS (재귀함수) dfs 함수 안에 도착점(N)에 도착하면 return 하는 조건을 넣었을 때 75% 까지만 완료되고 '틀렸습니다'가 반복됐는데, 딱 cycle이 발생하는지 아닌지만 확인하려고 이 조건을 지우니 맞았다. 아무튼 cycle이 존재하는지 확인하는 문제 memset은 cstring 헤더가 필요하다는 것도 다시 알게 된 사실 초기화 부분은 안 써도 되지만 새로운 걸 알게 돼서 써봤..