-
[C++] ์ผ์ฑ 1249. [S/W ๋ฌธ์ ํด๊ฒฐ ์์ฉ] 4์ผ์ฐจ - ๋ณด๊ธ๋ก์ฝ๋ฉํ ์คํธ/์ฝ๋ฉํ ์คํธ ์ฐ์ต 2020. 7. 22. 00:14728x90
์ ๋ ฅ๋ฐ๋ ๊ณผ์ ์ ์์ด์ ์ซ์๊ฐ ๋ถ์ด์ ์ฃผ์ด์ก๊ธฐ ๋๋ฌธ์ scanf๋ฅผ ํตํด ์ซ์ํ๋์ฉ ์ ๋ ฅ๋ฐ์.
์ฒ์์๋ DFS๋ฅผ ์ด์ฉํ ์์ ํ์์ผ๋ก ์งํํ์ง๋ง ์๊ฐ์ด๊ณผ ๋ฐ์
BFS์ DP๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ํด์ผ ํด๊ฒฐ๋จ.#include<iostream> #include<vector> #include<queue> #include<string.h> using namespace std; int N; int map[100][100]; int min_map[100][100]; int dir[4][2] = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} }; int findRoad() { queue<pair<int, int>> q; q.push(make_pair(0, 0)); min_map[0][0] = 0; while (!q.empty()) { int x = q.front().first; int y = q.front().second; q.pop(); for (int i = 0; i < 4; i++) { int new_x = x + dir[i][0]; int new_y = y + dir[i][1]; if (new_x < 0 || new_x >= N || new_y < 0 || new_y >= N) continue; if (min_map[new_x][new_y] > min_map[x][y] + map[new_x][new_y]) { min_map[new_x][new_y] = min_map[x][y] + map[new_x][new_y]; q.push(make_pair(new_x, new_y)); } } } return min_map[N - 1][N - 1]; } int main() { int T; cin >> T; for (int t = 1; t <= T; t++) { cin >> N; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { scanf("%1d", &map[i][j]); } } memset(min_map, 999999, sizeof(min_map)); cout << "#" << t << " " << findRoad() << endl; } return 0; }
728x90'์ฝ๋ฉํ ์คํธ > ์ฝ๋ฉํ ์คํธ ์ฐ์ต' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ์ผ์ฑ 2105. [๋ชจ์ SW ์ญ๋ํ ์คํธ] ๋์ ํธ ์นดํ (0) 2020.10.27 [C++] ํ๋ก๊ทธ๋๋จธ์ค. 2020 KAKAO BLIND RECRUITMENT ๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น (0) 2020.07.22 [C++] ํ๋ ธ์ด์ ํ (0) 2020.03.08 [C++] ์ ์ ์ ๋ ฌํ๊ธฐ (0) 2020.02.06 [C++] ๊ฒฝ์ฐ์ ์ (0) 2020.01.25