본문 바로가기

전체 글

(125)
12851 숨바꼭질 2 www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 전형적인 BFS 문제인데, 몇 가지 조건이 섞여있다. 가장 빠른 시간이 몇 초인지 계산 이건 쉽다 그냥 BFS를 돌리면 알아서 최단거리가 나오는게 자명하니까 가장 빠른 시간으로 찾는 방법의 수 이 부분에서 약간 실수했는데, BFS에서 이미 방문한 칸을 재방문하지 않도록 해놔서 틀렸었다. 그래서 재방문을 허용하지만 목표지점에 도착했을 때 최소시간을 저장하여 현재 칸이 최소시간..
17141 연구소 2 색종이 붙이기와 유사한 문제였다. 다만 기저사례에서 BFS가 추가되고, 최솟값을 구하는 과정이 추가되었을 뿐이다. 최솟값을 구하기 위한 시간이 꽤 들었던것 같다.풀이시간을 1시간 이내로 줄여봐야겠다. 정답코드 더보기 #include #include #include #include #include using namespace std; #define MAX_SIZE 50 #define INFITITE 10000000 int field[MAX_SIZE][MAX_SIZE] = { {0, 0} }; int virus[MAX_SIZE][MAX_SIZE] = { {0, 0} }; int cp[MAX_SIZE][MAX_SIZE] = { {0, 0} }; int dirRow[] = { 0, 0, 1, -1 }; int ..
17136 색종이 붙이기 try 1 : 색종이 개수가 부족한 경우, 다른 색종이를 붙일 수 있는데 고려하지 못했음 더보기 #include #include #include using namespace std; int field[10][10] = { {0,0} }; bool AttachField[10][10] = { {true, true} }; int cnt = 0, result = 10000; vector paper = { 0, 5, 5, 5, 5, 5 }; bool IsAttach(int row, int col, int size) { for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (field[row + i][col + j] == 0 || AttachFi..