Search
Duplicate
📕

뱀과 사다리 게임

주차
14
문제번호
16928
언어
C++
티어
실버
유형
BFS
nj_Blog
nj_상태
이해도
33%
풀이
사람
이해도 2
13 more properties

문제접근

현재 노드에서 갈 수 있는 주사위의 경우의 수를 다 따져주는 형식

놓쳤던 부분

map에 따로 초기화를 시켜줄 필요가 없을듯
ladder와 snake 배열을 따로 만들어서 관리할 필요도 없을듯

코드

2020 KB

0 ms

#include <iostream> #include <vector> #include <queue> #define LADDER 101 #define SNAKE 102 int n,m; int map[101]; int ladder[101]; int snake[101]; int cal_map[101]; void input_setting() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { int tmp1, tmp2; std::cin >> n >> m; for (int i = 1; i <= 100; i++) map[i] = i; for (int i = 0; i < n; i++) { std::cin >> tmp1 >> tmp2; map[tmp1] = 101; ladder[tmp1] = tmp2; } for (int i = 0; i < m; i++) { std::cin >> tmp1 >> tmp2; map[tmp1] = 102; snake[tmp1] = tmp2; } } int check_ladder_or_snake(int node) { if (map[node] == LADDER) return (ladder[node]); else if (map[node] == SNAKE) return (snake[node]); else return (map[node]); } void solution() { std::queue<int> q; int node; int next_node; q.push(1); cal_map[1] = 1; while (!q.empty()) { node = q.front(); q.pop(); for (int i = 1; i <= 6; i++) { next_node = node + i; next_node = check_ladder_or_snake(next_node); if (next_node >= 1 && next_node <= 100 && !cal_map[next_node]) { q.push(next_node); cal_map[next_node] = cal_map[node] + 1; if (cal_map[100]) break ; } } } std::cout << cal_map[100]; } int main(void) { input_setting(); input(); solution(); return (0); }
C++
복사