728x90
반응형

노드탐색 3

백준, BOJ, 16946번, 벽 부수고 이동하기 4 : C++ [CPP]

1000* 1000의 탐색은 쉽게 시간초과가 된다는 것을 충분히 인지해야 한다. 그래서 어려웠다. 1000* 1000 사이즈의 노드에서 하나씩 BFS하는 것은 (1000 * 1000) 에 대해 (1000*1000) 을 수행하는 것과 같다. 즉, 시간초과다. https://www.acmicpc.net/problem/16946 #맞는 풀이 #include #include #include #include #include #define X first #define Y second #define SIZE 1000 using namespace std; int dx[4] = { -1,1,0,0 }; int dy[4] = { 0,0,-1,1 }; int r, c; //행, 열 char given[SIZE][SIZE];..

백준, BOJ, 2573번, 빙산 : C++ [CPP]

어려웠다. 조건이 많았기 때문이다. https://www.acmicpc.net/problem/2573 #맞는 풀이 #include #include #define X first #define Y second using namespace std; int dx[4] = { -1,1,0,0 }; int dy[4] = { 0,0,-1,1 }; int R, C; int curMap[300][300]; int nextMap[300][300]; int year = 0; int visited[300][300]; //dfs를 위함 void melting(int x, int y) { int cnt = 0; //주변 바다의 칸 for (int dir = 0; dir < 4; dir++) { int nx = x + dx[dir..

백준, BOJ, 1987번, 알파벳 : C++ [CPP] ***

음 백트래킹하면서 DFS로 끝까지 가는 것이라 처음 접했을 때는 어려웠다. https://www.acmicpc.net/problem/1987 #맞는 풀이 ( 백트래킹 + DFS ) #include #include #include #include using namespace std; int dx[4] = {-1,1,0,0}; int dy[4] = {0,0,-1,1}; char arr[20][20]; int alpha[26]; // ASCII 코드 이용하기 'A' = 65 'a'=97 int R,C; //Row(행) , Column(열) int answer = 0; // 최댓값 //현재 위치, 현재까지의 길이 void dfs(int x, int y, int dist){ // 최댓값 갱신 answer = ma..

728x90
반응형